我无法弄清楚我应该如何查询这个。
表格1
id client_name Group_id
------------------------------
1 IBM 1
2 DELL 1
3 DELL 2
4 MICROSOFT 3
5 DELL 2
6 MICROSOFT 2
7 HP 3
7 HP 1
表 2
id group_name
------------------
1 Group1
2 Group2
3 Group3
使用下面的查询。
SELECT Client_name, GROUP_CONCAT(distinct(group_name)) merge_group , count(distinct(group_name)) as num_groups
FROM Table1 t1
JOIN Table2 t2
ON t1.group_id = t2.id
GROUP BY t1.Client_name
ORDER BY t1.Id having num_groups > 1
将由此产生
client_name merge_group
-------------------------
DELL Group1,Group2
MICROSOFT Group2,Group3
HP Group1,Group3
如果我选择 Group2,我需要过滤 merge_group
结果是这样的
client_name merge_group
-------------------------
DELL Group1,Group2
MICROSOFT Group2,Group3
或者如果我查询 Group1,结果就是这样。
client_name merge_group
-------------------------
DELL Group1,Group2
HP Group1,Group3