MySQL group_concat 在子查询中两次 DISTINCT
MySQL group_concat twice in SubQuery DISTINCT
我有 table 这样的:
title name
1 ADAM SMITH
1 JACK SMITH
1 ROBERT ABADI
2 JACK SMITH
2 JAMES ANDERSON
3 JACK SMITH
当我用查询调用数据时看起来像
SELECT title, name, group_concat(name) as gname
FROM sample
GROUP BY title
结果是:
1 ADAM SMITH ADAM SMITH,JACK SMITH,ROBERT ABADI
2 JACK SMITH JACK SMITH,JAMES ANDERSON
3 JACK SMITH JACK SMITH
现在,我想再次按名称分组。所以我调用这个查询,结果如下。
SELECT title, name, group_concat(distinct gname)
FROM
(
SELECT title, name, group_concat(name) as gname
FROM sample
GROUP BY title
) sub
GROUP BY sub.name
1 ADAM SMITH ADAM SMITH,JACK SMITH,ROBERT ABADI
2 JACK SMITH JACK SMITH,JAMES ANDERSON,JACK SMITH
但我不想在最后一列中出现两次“JACK SMITH
”。
我知道原因,因为第一个 group_concat()
结果是不能与 'DISTINCT
' 子句一起应用的字符串。
如有任何建议,我们将不胜感激。
使用 JOIN
获取共同作者:
SELECT s1.name, GROUP_CONCAT(DISTINCT s2.name)
FROM sample AS s1
JOIN sample AS s2 ON s1.title = s2.title
GROUP BY s1.name
如果您不想将作者显示为他自己的合著者,请将 AND s1.name != s2.name
添加到 ON
条件。
我有 table 这样的:
title name
1 ADAM SMITH
1 JACK SMITH
1 ROBERT ABADI
2 JACK SMITH
2 JAMES ANDERSON
3 JACK SMITH
当我用查询调用数据时看起来像
SELECT title, name, group_concat(name) as gname
FROM sample
GROUP BY title
结果是:
1 ADAM SMITH ADAM SMITH,JACK SMITH,ROBERT ABADI
2 JACK SMITH JACK SMITH,JAMES ANDERSON
3 JACK SMITH JACK SMITH
现在,我想再次按名称分组。所以我调用这个查询,结果如下。
SELECT title, name, group_concat(distinct gname)
FROM
(
SELECT title, name, group_concat(name) as gname
FROM sample
GROUP BY title
) sub
GROUP BY sub.name
1 ADAM SMITH ADAM SMITH,JACK SMITH,ROBERT ABADI
2 JACK SMITH JACK SMITH,JAMES ANDERSON,JACK SMITH
但我不想在最后一列中出现两次“JACK SMITH
”。
我知道原因,因为第一个 group_concat()
结果是不能与 'DISTINCT
' 子句一起应用的字符串。
如有任何建议,我们将不胜感激。
使用 JOIN
获取共同作者:
SELECT s1.name, GROUP_CONCAT(DISTINCT s2.name)
FROM sample AS s1
JOIN sample AS s2 ON s1.title = s2.title
GROUP BY s1.name
如果您不想将作者显示为他自己的合著者,请将 AND s1.name != s2.name
添加到 ON
条件。