我有一個錶鏈接userID和friendID(這是另一個用戶)說他們是朋友。 如果用戶1的用戶24作爲他們的朋友,下表中的第一行會發生 如果用戶10將用戶1作爲他們的朋友,下表中的第二行會發生MySQL表加入
從那裏,即使用戶1在任何一方,他們是與相鄰ID的朋友。
FRIENDS TABLE:
userID | friendID
-----------------
1 | 24
10 | 1
我現在需要做的是:如果用戶1登錄,我需要顯示他們的朋友。該查詢我已經寫了:
SELECT DISTINCT (Users.username), friends.userID, friends.friendID FROM Users, friends WHERE Users.userID IN(SELECT userID FROM friends WHERE Users.userID = friends.userID) OR Users.userID IN(SELECT DISTINCT(userID) FROM friends WHERE Users.userID = friends.friendID)
將帶回:
username | userID | friendID
-----------------------------
name1 | 10 | 1
name1 | 1 | 24
name2 | 10 | 1
name2 | 1 | 24
名1 = ID 1 名稱2 = ID 10
有沒有一種方法,我可以取回已登錄的用戶朋友(例如,如果ID#1已登錄)是否出現在用戶ID或friendID列中。然後,在這種情況下,檢索ID 24和10,因爲它們與ID#1鏈接,然後當顯示時,從列表中消除ID#1,因爲它會引起他們與自己的朋友。
希望這是有道理的,並提前感謝您!
您仍然可能想要將其包裝在SELECT DISTINCT中你不會得到重複。 – Brad 2012-03-05 21:04:29
@Brad,感謝您的評論,但UNION會自動刪除重複的行。 – 2012-03-05 21:09:30
哦,我從來沒有意識到!感謝信息 – Brad 2012-03-05 21:11:38