我有一个名为Tag Lists的MySQL表
字段为list_id,person_id,company_id
id | List_id | Person_id | Company_id
-------------------------------------
1 | L1 | P1 | C1
2 | L1 | P2 | C1
3 | L1 | p3 | C3
4 | L2 | P4 | C4
5 | L2 | P5 | C5
如何获得类似下面的输出。这在单个MySQL查询中是否可行?
id | List_id | Person_count | Company_count
-------------------------------------------
1 | L1 | 3 | 2
2 | L2 | 2 | 2
在单列上使用普通组我可以找到列表的person_count或company_count。
Select list_id, count(person_id) from tag_lists group by list_id
答案 0 :(得分:2)
你试过这个:
Select list_id, count(distinct person_id),count(distinct Company_id) from tag_lists group by list_id
答案 1 :(得分:1)
尝试以下查询:
Select list_id, count(Distinct person_id), count(Distinct Company_id)
from tag_lists
group by list_id
答案 2 :(得分:1)
您可以使用DISTINCT和两个COUNT()方法:
SE list_id, COUNT(DISTINCT person_id), COUNT(DISTINCT company_id) FROM tag_lists GROUP BY list_id
这样你就可以获得所需的输出。我没有测试过这个。