gpt4 book ai didi

MySQL统计group_concat()产生的列中的公共(public)数据

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

我试图找到某些作者之间共有的共同作者的数量 - 当作者的名字和姓氏相同并且其中一个作者没有中间名时。

在这种情况下,我们有兴趣找到没有中间名的作者与有中间名的作者共有的共同作者的数量。

例如,[链接]http://www.sqlfiddle.com/#!9/75243/1

在此表中,我们的作者有多个中间名,但名字和姓氏相同,即 JACK SMITH、JACK A SMITH、JACK B SMITH。我们有兴趣找到共同作者的数量

1. JACK SMITH with JACK A SMITH
2. JACK SMITH with JACK B SMITH

结果将包括 num 字段结果

JACK A SMITH  1
JACK B SMITH 0

因为 JACK A SMITHJACK SMITH 有一位共同作者,而 JACK B SMITHJACK 没有共同作者史密斯

最佳答案

您可以对多列使用COUNT(DISTINCT ...)。因此,您可以使用它来计算不同的全名,而不必先将它们连接起来。

SELECT s1.fname, s1.mname, s1.lname, s1.name, COUNT(DISTINCT s2.fname, s2.mname, s2.lname) as num
FROM ( SELECT title, fname, mname, lname, CONCAT(fname, ' ',mname, ' ', lname) as name
FROM sample ) as s1
LEFT JOIN sample AS s2
ON s1.title = s2.title AND s1.fname = s2.fname AND s1.lname = s2.lname AND s1.mname != s2.mname
WHERE s1.mname != ''
GROUP BY s1.name
ORDER BY s1.lname, s1.fname, s1.mname

我使用了 LEFT JOIN 而不是 JOIN 来获取具有零个共同作者的行。

关于MySQL统计group_concat()产生的列中的公共(public)数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28973941/

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