MySQL错误#1111

时间:2015-12-23 13:52:29

标签: mysql mysql-error-1111

我有一个玩家表现的表格,我想要为每位玩家返回高分,如果他们在获得此分数时没有出局,则在其后添加星号(' *')。这是我到目前为止构建的查询,但它给了我错误#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

2 个答案:

答案 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可能也很困惑。