与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命令中完成吗?
答案 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)
select user_id, count(distinct dat) from test
group by user_id