gpt4 book ai didi

MySQL group_concat 在子查询 DISTINCT 中两次

转载 作者:行者123 更新时间:2023-11-29 12:21:16 24 4
gpt4 key购买 nike

我有这样的表:

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

DEMO

如果您不想将某个作者显示为自己的合著者,请将 AND s1.name != s2.name 添加到 ON 条件中。

关于MySQL group_concat 在子查询 DISTINCT 中两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28969840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com