我有两个表:User表和[user_friend]表。在[user_friend]表中,您可以看到哪个用户是某个用户的朋友。
用户表如下所示:
[User_ID], [Username], [Password] 1 Mikeyy1 666je 2 misterG 8kdkd
friends-table看起来像这样:(其中Friend_ID具有User中User_ID的外键)
[User_ID] [Friend_ID]
1 3
1 6
我想查询以下内容:用他们朋友的名字显示所有用户名。
到目前为止,我有这个:
SELECT u.Username, f2.Friend_ID
FROM [User] u JOIN [user_friend] f2
ON u.User_ID = f2.User_ID
返回所有用户的用户名和朋友的friend_ID,但我也想要他们的名字,所以我想这个:
SELECT u1.Username, f2.Friend_ID, (SELECT u.Username FROM [User] u
JOIN [user_friend] f ON u.User_ID = f.friend_ID) AS "Friend"
FROM [User] u1 JOIN [user_friend] f2
ON u1.User_ID = f2.User_ID
但是这会给出子查询返回的值超过1的错误,我该如何解决?
提前谢谢你!
答案 0 :(得分:2)
您需要添加另一个JOIN
:
SELECT
u.Username,
u2.Username
FROM [User] u
INNER JOIN [User_Friend] uf
ON uf.User_ID = u.User_ID
INNER JOIN [User] u2
ON u2.User_ID = uf.Friend_ID
答案 1 :(得分:2)
@Felix Pamittan是解决它的常用方法。但为了完整起见,您的原始查询应为
SELECT u1.Username,
f2.Friend_ID,
(SELECT u2.Username
FROM [User] u2
WHERE u2.User_ID = uf.friend_ID) AS "Friend"
FROM [User] u1
JOIN [user_friend] uf
ON u1.User_ID = uf.User_ID