微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 当WHERE不匹配时,在COUNT列中显示“0”?

我想要做的是从表中检索所有数据,并按用户在特定类别中玩的游戏数量来排序.有什么办法可以使用某种“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_data表

user_id | user

1       | jeff
2       | herb
3       | dug

playing_games表

id | user_id | game | game_cat

1  |    2    | kill | fps
2  |    1    | shoot| fps
3  |    2    | COD  | fps
4  |    3    | dogs | cas

解决方法:

我就是这样做的.没有子查询,没有COALESCE,没有COUNTIF垃圾.

SELECT `users`.`user`, COUNT(`played_games`.id) AS `c`
FROM `users`
LEFT OUTER JOIN `played_games` ON
`users`.`user_id` = `played_games`.`user_id`
AND `played_games`.`game_cat` = "fps"
GROUP BY `users`.`user_id`
ORDER BY `c` DESC, `user` ASC

SQLFiddle(不确定你是否可以像这样链接他们……)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐