gpt4 book ai didi

sql-server - SQL Server : find shared items in 2 columns

转载 作者:行者123 更新时间:2023-12-02 20:43:12 25 4
gpt4 key购买 nike

我试图弄清楚如何为 SQL Server 编写一个查询,用于匹配共同的 friend 。名称位于同一个表的两列中。仅应返回“已接受”的 friend 。

以下是数据库信息的示例:

ID     Name_1     Name_2     Accepted
=====================================
1 Jimmy John 1
2 John Joey 1
3 Joey Jimmy 1
4 John Sally 1
5 Jimmy Sally 0

在此示例中,吉米是约翰的 friend 。这两个人之间的共同 friend (以及期望的结果)是乔伊。莎莉对两人来说也很常见,但吉米还没有接受她作为 friend 。

最佳答案

尝试使用这种双重自连接来建立相互友谊:

SELECT Friend_1, Friend_2, COMMON
FROM
(
SELECT f2.NAME_1 AS Friend_1
,f1.NAME_2 AS Friend_2
,f2.Name_2 AS COMMON
FROM friends f1
INNER JOIN friends f2
ON f1.NAME_1 = f2.NAME_2
WHERE f1.accepted = 1 AND f2.accepted = 1
) T
INNER JOIN FRIENDS F3
ON (F3.Name_1 = Friend_1 AND F3.Name_2 = Friend_2)
OR (F3.Name_2 = Friend_1 AND F3.Name_1 = Friend_2)
WHERE F3.ACCEPTED <> 0 AND Friend_1 = 'John' AND Friend_2 = 'Jimmy'

COMMON是共同的 friend 。

相关SQL Fiddle

注意:我不确定这种结构是维持这种关系的最佳结构,你有关于相互友谊、关于友谊拒绝的规则,但看起来你对此一无所知这些信息。您只知道部分信息还是这是您的存储系统/架构?

关于sql-server - SQL Server : find shared items in 2 columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16858562/

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