MySQL错误#1111
我有一张玩家表现表,我想要为每个玩家返回高分,并在其后面添加一个星号('*'),如果他们在获得此分数时没有出局。这是到目前为止,我已经建立了查询,但它给了我错误#1111:无效使用组功能MySQL错误#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
发生试试这个即加列名(player_id,players.name),你是选择在GROUP BY子句:
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
不幸仍然显示相同的错误 – user5697101
@MichealOMaolain:请检查编辑! –
对于强制执行GROUP BY字段匹配非聚合输出列(与其他DBMS不同),MySQL并不挑剔。 – symcbean
SELECT IF(is_out = 0,CONCAT(MAX(得分), '*'),MAX(分数)) FROM击球WHERE得分= MAX(得分)
这没有任何意义(您不能在WHERE子句中使用聚合函数)。事实上,我正在努力想象你期望它做什么。 MySQL可能也很困惑。
我想选择包含最大分数的行,检查该行上的is_out列是否等于0,如果是,则将最大分数返回为星号,否则返回不带星号 – user5697101
请参见http:// stackoverflow .COM /问题/ 9028375/MySQL的,需要两禁地/ 9032759#9032759 – symcbean
我怀疑错误涉及从击球 –
选择MAX(分数)的子查询@Yottatron没有区别,如果我改变了'MAX(分数)'只是'score' IF函数 – user5697101
内当该子查询删除它执行得很好... –