假设一个Facebook好友的表看起来像这样- SQL,那么您如何编写一个userId | friendId
查询来查找两个好友之间的共同好友呢?我有下面的代码,可以为两个朋友A和B工作。然而,我觉得它还不够优化,我希望我可以用joins来做同样的查询。我感到困惑的两个领域:
在Stack Overflow/互联网上有多个类似的问题,但似乎没有一个是100%准确的!
我正在寻找一个MS SQL服务器查询,但任何SQL语言应该可以工作。
SELECT *
FROM (
SELECT CASE WHEN userId = 'A' THEN friendId ELSE userId END AS mutualFriends
FROM friendsTable
WHERE userId = 'A' OR friendId = 'A'
UNION
SELECT CASE WHEN userId = 'B' THEN friendId ELSE userId END AS mutualFriends
FROM friendsTable
WHERE userId = 'B' OR friendId = 'B'
) A
WHERE mututalFriends NOT IN ('A','B')
https://stackoverflow.com/questions/56203823
复制相似问题