选择表中不同列的计数

时间:2013-10-31 08:17:26

标签: mysql sql select count distinct

假设我有一个格式为sql的表:

id INT PRIMARY KEY AUTO_INCREMENT,
action TINYINT NOT NULL,
user_id INT NOT NULL

我想构建一个产生与以下相同结果的查询:

SELECT
    (SELECT COUNT(*), action FROM table WHERE action=1 AND user_id=1),
    (SELECT COUNT(*), action FROM table WHERE action=2 AND user_id=1),
    (SELECT COUNT(*), action FROM table WHERE action=3 AND user_id=1),
    ...
    (SELECT COUNT(*), action FROM table WHERE action=n AND user_id=1)

(1 - n仅是action

的范围

但没有所有冗余和低效率。

3 个答案:

答案 0 :(得分:3)

如果我正确理解了这个问题,那就是你要找的东西:

SELECT   action, COUNT(*)
FROM     your_table
WHERE    user_id = 1
GROUP BY action

答案 1 :(得分:2)

您可以使用GROUP BY:

SELECT 
COUNT(*) as Count, 
action as Action 
FROM table1 
WHERE user_id = 1
GROUP BY action

这将为每个唯一操作生成一行,并且在该行中有一列Count,即具有该唯一操作的行数。

在上面的示例中,所有user_id条件都是= 1,因此如果是这种情况,您可以将其包含在查询中,否则您可以根据所需的值形成自己的条件。

答案 2 :(得分:0)

SELECT COUNT(id), action FROM table WHERE user_id=1 GROUP BY action
HTH,虽然如果你正在寻找的话,我有点困惑。