我正在构建一个游戏的东西,我正在研究匹配的玩家机制,但我得到这个错误,我无法想象。我有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'
答案 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