我有一个表链接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