如何使用其他记录中的值为每个 table 创建一个 Group_Concat 字段

How can I create a Group_Concat field per table using values from other records

假设一个 table 的名字和姓氏,我想为每条记录做一个逗号分隔的亲属列表。

根据这个 sqlFiddle

http://sqlfiddle.com/#!9/25d80c/1

我知道如何手动 group_contact 任何姓氏,但不清楚如何为每条记录找到匹配姓氏且 运行 相同 group_concat

您可以使用自 LEFT 连接和聚合来完成:

SELECT s1.First, s1.Last,
       GROUP_CONCAT(s2.First) Relatives
FROM Surnames s1 LEFT JOIN Surnames s2
ON s2.Last = s1.Last AND s2.First <> s1.First
GROUP BY s1.First, s1.Last;

参见demo

您可以将聚合放在 lateral join 中,如下所示:

select s.First, s.Last, r.Relatives
from Surnames s,
lateral (
  select group_concat(First) Relatives
  from Surnames r
  where s.Last = r.Last AND s.First != r.First
)r

DB<>Fiddle