我需要帮助从表中查询friendID。 我的表存储了两个朋友在一起的用户ID。
但是为了存储一个“friendhship”b / w两个成员,我必须存储两个这样的记录:
friendshipID | userID | friendID
1 | 5 | 10
2 | 10 | 5
然而,当我们真的只需要存储第一条记录时,这对DB来说似乎很重要,因为它足够包含两个成员的ID。
然而,当我想查询ID = 5的朋友的记录时,就会出现问题。有时,ID位于userID列中,有时则位于friendID列中。
这是我正在使用的查询:
SELECT *
FROM friends
WHERE userID = '5'
OR friendID = '5'
但我想做的就是这样的事情
SELECT
if $userID=5 then userID as myfriend
else friendID=5 then friendID as myfriend
FROM friends WHERE userID='5' OR myfriendID='5'
希望这是有道理的。最后,我想拥有会员#5的所有朋友ID,而不是以#5作为朋友或用户......而只是他的朋友。
答案 0 :(得分:3)
此查询将返回#5朋友的Id值和名称,如SQL Fiddle Example
所示SELECT f.FriendId AS FriendId
, u.Name AS FriendName
FROM FriendTable AS f
INNER JOIN UserAccount AS u ON f.FriendId = u.UserId
WHERE f.UserId = 5
UNION
SELECT f.UserId AS FriendId
, u.Name AS FriendName
FROM FriendTable AS f
INNER JOIN UserAccount AS u ON f.UserId = u.UserId
WHERE f.FriendId = 5
UNION
将删除重复项,使此查询适用于单个朋友记录或您在评论中提及的2记录友情。你不应该需要2记录的友谊,因为没有新的信息存储在第二个记录中,你只能从一个记录中获得。