我有一个玩家表现的表格,我想要为每位玩家返回高分,如果他们在获得此分数时没有出局,则在其后添加星号(' *')。这是我到目前为止构建的查询,但它给了我错误#1111:无效使用组函数
SELECT player_id, players.name,
COUNT( * ) AS matches,
SUM( score ) AS runs,
(SELECT IF(is_out = 0, CONCAT(MAX(score),'*'), MAX(score)) FROM batting WHERE score = MAX(score) ) AS high
FROM batting
RIGHT JOIN players ON batting.player_id = players.p_id
WHERE player_id <> 0
GROUP BY player_id
我已经看过其他时候这个错误已经出现,它应该指示何时在MAX / MIN函数上执行SUM函数,但是我无法在查询中看到这种情况发生在哪里
我哪里出错了,我将如何纠正这个问题,grma
答案 0 :(得分:1)
试试这个,即添加你在GROUP BY子句中选择的列名( player_id,players.name ):
SELECT player_id, players.name,
COUNT( * ) AS matches,
SUM( score ) AS runs,
(SELECT IF(is_out = 0, CONCAT(MAX(score),'*'), MAX(score)) FROM batting WHERE score = MAX(score) ) AS high
FROM batting
RIGHT JOIN players ON batting.player_id = players.p_id
WHERE player_id <> 0
GROUP BY player_id, players.name, high
答案 1 :(得分:1)
SELECT IF(is_out = 0,CONCAT(MAX(得分),&#39; *&#39;),MAX(得分)) 从击球WHERE得分= MAX(得分)
这没有任何意义(你不能在WHERE子句中使用聚合函数)。事实上,我很难想象你期望它做什么。 MySQL可能也很困惑。