【发布时间】:2012-03-18 06:08:37
【问题描述】:
我想做的是从一个表中检索所有数据,并按用户在特定类别中玩的游戏数量对它们进行排序。有什么办法可以使用某种“COUNT WHERE”的sql语句吗?
这是我到目前为止所拥有的。如果他们玩过“fps”类别的游戏,它只会返回用户,但我希望它以降序显示所有用户,即使他们没有玩过 fps 游戏。请原谅我蹩脚的桌子
SELECT user_data.user, COUNT(played_games.game_cat) as 'count'
FROM user_data, played_games
WHERE user_data.user_id = played_games.user_id and played_games.game_cat = 'fps'
GROUP BY user_data.user_id
ORDER BY 'count' DESC;
用户数据表
user_id | user
1 | jeff
2 | herb
3 | dug
played_games 表
id | user_id | game | game_cat
1 | 2 | kill | fps
2 | 1 | shoot| fps
3 | 2 | COD | fps
4 | 3 | dogs | cas
【问题讨论】:
-
重写为正确的左连接,user_data 在左边,played_games 在右边。这将列出所有用户,并且只为那些实际玩过游戏的人提供非空/非零计数。
标签: php mysql count sql-order-by