将一个表的两列连接到另一表的同一列

时间:2018-10-03 08:48:01

标签: mysql sql

我有两个表User和Task。

User Table                    
int id
fname
lname

Task Table
int id
int assigned_by
int assigned_to

assigned_by和Assigned_to存储用户的id值。我必须在同一查询中显示assigned_by和assigned_to值。

select u.fname+ +u.lname 
from user u,task t 
where u.id=t.assigned_by;

如何在同一查询中添加u.id = t.assigned_to。

2 个答案:

答案 0 :(得分:2)

您需要使用不同的别名将user表连接两次

select CONCAT_WS(' ', u_by.fname, u_by.lname) as by_name,
       CONCAT_WS(' ', u_to.fname, u_to.lname) as to_name
from task t 
join user u_by on u_by.id = t.assigned_by
join user u_to on u_to.id = t.assigned_to

答案 1 :(得分:1)

使用显式连接和concat进行字符串添加

select concat(u1.fname ,u2.lname) as assigned_by_name,
 concat(u2.fname,u2.lname) as assigned_to_name
from task t 
join user u1 on u1.id = t.assigned_by
join user u2 on u2.id = t.assigned_to

注意避免使用此旧方法加入 from user u,task t where u.id=t.assigned_by