在单个JOIN中从同一个表中选择不同的用户

时间:2014-03-26 10:21:04

标签: mysql sql join

我目前正在尝试使用另一个表(用户)加入表(任务)。我需要根据tasks表中的值选择users表中的不同行:

tasks(user1, user2, user3);

users(id, name, email);

以前我使用LEFT JOIN链接数据,如下所示:

SELECT * FROM tasks LEFT JOIN users ON tasks.user1 = users.id;

这很简单,所以我尝试使用AND这样:

SELECT * FROM tasks LEFT JOIN users ON tasks.user1 = users.id AND tasks.user2 = users.id;

但是将users字段返回为NULL,这是有道理的,因为tasks.user1与tasks.user2不同

我现在非常难以理解如何做到这一点,欢迎所有建议!

2 个答案:

答案 0 :(得分:2)

您需要为每个已加入的列重复加入并为users表格别名:

SELECT * FROM tasks 
LEFT JOIN users u1 ON tasks.user1 = u1.id 
LEFT JOIN users u2 ON tasks.user2 = u2.id 
... 

答案 1 :(得分:1)

使用这个:

SELECT * 
FROM tasks 
LEFT JOIN users 
ON tasks.user1 = users.id 
OR tasks.user2 = users.id;