我有一个投票mysql表,用户(用户列)可以投票y或n。 (选项栏)
我的表格结构如下:
| id | option | user | | 1 | y | jack | | 2 | n | jack | | 3 | n | michi| | 4 | n | michi|
我想要做的是,选择不同的用户和计数选项并将其显示在一行中,如下所示:
| y | n | | 1 | 2 |
我尝试了GROUP_CONCAT()和SUM,但没有运气。你能帮助我让这个sql工作吗?
感谢。
答案 0 :(得分:1)
GROUP_CONCAT()
和SUM()
这样的 组函数需要COUNT()
语句才能知道要合并的行。
在您的查询中,您要使用GROUP BY
。
试试这个:
COUNT()
DEMO:http://sqlfiddle.com/#!9/705a9d/3
这将显示每SELECT `option`, COUNT(DISTINCT `user`) AS users
FROM `table`
GROUP BY `option`
行一行。如果你想在一行中同时选择两个选项,那就有点棘手了。您需要为每个选项使用子查询。
option
DEMO:http://sqlfiddle.com/#!9/705a9d/4
注意:可以使用SELECT (
SELECT COUNT(DISTINCT `user`)
FROM `table`
WHERE `option` = 'y'
) AS y, (
SELECT COUNT(DISTINCT `user`)
FROM `table`
WHERE `option` = 'n'
) AS n
而不使用COUNT()
。这将使查询将所有找到的行组合在一起。