我希望我足夠聰明地弄清楚這個查詢!
我不相信前兩個答案每個都得到了贊成票。這不是本·圖爾宣稱的那樣微不足道!
由於這很難用單個查詢來解決,您會考慮採用不同的方法嗎?
如何獲取一對用戶的存儲過程,然後列出他們的共同朋友?
(我假設IsPending = 1
意味着他們不是朋友還)
CREATE PROCEDURE find_mutual_friends
(
@user1 varchar(255),
@user2 varchar(255)
)
as
SELECT
Friends
FROM
(SELECT
Friendships.Sender as Friends
FROM
Friendships
WHERE
Friendships.Recipient = @user1
and Friendships.IsPending = 0
UNION ALL
SELECT
Friendships.Recipient as Friends
FROM
Friendships
WHERE
Friendships.Sender = @user1
and Friendships.IsPending = 0) FriendsTempTable
WHERE
FriendsTempTable.Friends in
(SELECT
Friendships.Sender as Friends
FROM
Friendships
WHERE
Friendships.Recipient = @user2
and Friendships.IsPending = 0
UNION ALL
SELECT
Friendships.Recipient as Friends
FROM
Friendships
WHERE
Friendships.Sender = @user2
and Friendships.IsPending = 0)
發表您的嘗試,請... –
你怎麼會寫SELECT語句來做到這一點?開始簡單並寫一個SELECT,顯示哪些共同朋友a和b有。從那裏,它應該是微不足道的。 –