Mysql如何求和并显示为单行

时间:2015-09-11 16:42:09

标签: mysql

我有一个投票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工作吗?

感谢。

1 个答案:

答案 0 :(得分:1)

像<{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()。这将使查询将所有找到的行组合在一起。