我已经尝试了几个小时来使用 MySQL 进行左连接查询。
我有一个名为“at_friends”的表,用于存储用户之间的关系。
id | id_user1 | id_user2 | accepted
1 | 2 | 1 | 1
2 | 1 | 3 | 0
表示用户1和用户2是好友,用户1向用户3发送了好友请求。
这是我的表“at_users”
id | name
1 | "John"
2 | "Mike"
3 | "Bob"
我试过这个查询:
SELECT at_users.id, at_users.name
FROM at_users
LEFT JOIN at_friends
ON at_friends.id_user1 = at_users.id
OR at_friends.id_user2 = at_users.id
AND at_friends.accepted = 1
WHERE id_user1 = 1 OR id_user2 = 1
“1”是当前用户(John)的唯一id
但是我得到了这些结果
id | name
1 | "John"
2 | "Mike"
1 | "John"
我想要的是用户 n°1 的已接受好友列表。
顺便说一下,我使用 Laravel,但我不知道是否有没有自定义 mysql 查询的方法。
最佳答案
试试这个:
SELECT u.id, u.name
FROM at_users u
INNER JOIN (SELECT id_user2 AS friendID FROM at_friends WHERE id_user1 = 1 AND accepted = 1
UNION
SELECT id_user1 AS friendID FROM at_friends WHERE id_user2 = 1 AND accepted = 1
) AS A ON u.id = A.friendID
关于mysql - Left Join 查询返回错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27667587/