计算多列上的不同值

时间:2015-04-20 19:48:47

标签: mysql

this类似的问题但是我想要算出多少不同的区别 值显示一个user_id。如果我有下表:

USER_ID  DATA
123      abc
234      abc
123      def
456      def
123      abc

我希望得到以下结果:

USER_ID  COUNT
123      2
234      1
456      1

因为' 123'有两个' abc'和' def'数据值,其中' 234'和' 456'只有一个不同的数据值。

目前我有以下伪代码:

rows = SELECT DISTINCT user_id FROM table
for for in rows:
     result = SELECT DISTINCT user_id, data FROM table WHERE user_id = <row>
     if result.rowcount > 2:
          doSomething()

但这需要很长时间,因为它必须为每个user_id进行调用。

这可以在一个MySQL命令中完成吗?

3 个答案:

答案 0 :(得分:3)

只需使用COUNT()聚合以及GROUP BY

SELECT
    user_id,
    COUNT(DISTINCT data) AS distinct_data_count
FROM table
GROUP BY user_id

答案 1 :(得分:0)

我有点生疏,但你做不到

SELECT DISTINCT user_id, COUNT(DISTINCT data) as dc from table;

答案 2 :(得分:0)

这是SQL Fiddle

select user_id, count(distinct dat) from test
group by user_id