我有一张表,其中存储了一个人和他的爱好。我想打印爱好组合列表(自动)和只选择那些爱好组合的总人数。爱好列表超过40,所以我希望自动生成列表。
我的表看起来像这样
A-h1 A-h2 A-h3 B-h1 B-h4 C-h1 C-h3 D-h1 D-h4 E-h1 E-h3
即:
A has hobbies h1,h2,h3 B has hobbies h1,h4 c has hobbies h1,h3 D has hobbies h1,h4 E has hobbies h1,h3
我的结果是
h1,h2,h3- 1 h1,h4 - 2 h1,h3 - 2
请帮我找到答案
答案 0 :(得分:0)
使用:
group_concat()
生成每人的爱好列表distinct
和order by
与group_concat()
一起保持组合一致试试这个:
select hobby_list, count(*) from (
select group_concat(distinct hobby order by hobby) hobby_list
from hobbies
group by userid
) x
group by 1
答案 1 :(得分:0)
Select Hobbies, Count(*) From
(Select `person`, Group_concat(`hobby` Order by `hobby`) as Hobbies
From Table1 Group by `person`) Result
Group by Hobbies;
<强> Fiddle 强>