gpt4 book ai didi

mysql - 返回具有重复数据的不同数据对

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

我想编写一个 SQL 查询,返回共享同一城市的成对人员的列表,没有重复项。 (这只是测试数据,因为真实的数据库非常随机,并且会使问题变得困惑)。样本数据:

Person | City
Tom | New York
Kenny | Washington
Katja | New York
Kerry | New York
Dan | Washington

Sample return:
Tom, Katja
Kenny, Dan
Kerry,

我的直觉如下:

SELECT DISTINCT a.person, b.person
FROM People AS a, People AS b
WHERE a.city = b.city;

但是,这会在 b 列中返回重复项,这并不理想。我尝试了一些调整,但无法让它返回不同的值。

请解释一下你的答案,谢谢!

最佳答案

如果你想要成对的,你可以这样做:

SELECT p1.person, p2.person
FROM People p1 LEFT JOIN
People p2
ON p1.city = p2.city AND p1.person <> p2.person
WHERE p2.person IS NULL OR p1.person < p2.person;

LEFT JOIN 确保所有人员都包含在内,即使没有匹配项。

Here是一个 SQL Fiddle。

您可能会发现为每个城市生成列表更方便:

select p.city, group_concat(p.person order by p.person)
from people p
group by p.city;

关于mysql - 返回具有重复数据的不同数据对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49226110/

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