Mysql无效使用带有Count的组功能?

时间:2014-02-26 09:24:47

标签: mysql

我正在构建一个游戏的东西,我正在研究匹配的玩家机制,但我得到这个错误,我无法想象。我有2个表games,其中包含有关游戏不同实例的信息,以及players在每个游戏中保存玩家的信息。现在,当新玩家加入配对队列时,我想选择所有当前没有开始的游戏,并将它们(玩家)添加到相应的游戏中。我如何识别未开始的游戏是由其中的玩家数量决定的。如果一个游戏是针对2个玩家的,那么任何一个玩家的游戏还没有开始。这是我的查询

SELECT * // * for saving time in testing
FROM games d LEFT JOIN players dp ON d.id = dp.gameId 
WHERE d.players > COUNT(dp.playerId) LIMIT 1

但是我得到了这个恼人的错误

  

1111 - 无效使用组功能

我试过这样的

SELECT *, COUNT(dp.playerId) AS cPlayers 
FROM games d LEFT JOIN players dp ON d.id = dp.gameId 
WHERE d.players > cPlayers LIMIT 1

然后我得到了

  

1054 - 'where子句'

中的未知列'cPlayers'

2 个答案:

答案 0 :(得分:2)

我想这应该可行。

SELECT * 
FROM games d LEFT JOIN players dp ON d.id = dp.gameId
GROUP BY d.id
HAVING d.players > COUNT(dp.playerId) LIMIT 1

答案 1 :(得分:-1)

您应该在字段上使用 GROUP BY 来使用COUNT(dp.playerId)等聚合函数。

试试这个

SELECT COUNT(dp.playerId) AS cPlayers 
FROM games d LEFT JOIN players dp ON d.id = dp.gameId group by dp.playerId  
WHERE d.players > cPlayers LIMIT 1