在两个不同的列上连接

时间:2018-10-19 14:24:24

标签: sql join

Table 1 people_ID TypePerson
----------------------------
          5525       person1
          6250       person2
          5897       person2
          2584       person1

Table2 person1 person2
----------------------
         5525      5897
         2584      6250

我想在table2的两个不同列上加入table1。 直到现在我有了这个:

select * 
from table1 join 
     table2 
     on people_ID = person1

我知道这是不正确的事实,但是我不知道如何进行(有更多变量,但我只能加入这些变量,所以我将其他变量排除在外) 请帮忙!

2 个答案:

答案 0 :(得分:-1)

尝试此查询

Declare @table1 table(people_ID int, TypePerson varchar(100))
insert into @table1(people_ID, TypePerson)
select 5525,'person1' union
select 6250,'person2' union
select 5897,'person2' union
select 2584,'person1' 

declare @table2 table(person1 int, person2 int)
insert into @table2(Person1, person2)
select  5525,      5897 union
select  2584,      6250 

select * from @table1
select * from @table2

select *
from @table2 t1
left join @table1 t2a on 
t2a.people_ID= t1.person1
left join @table1 t2b on 
t2b.people_ID= t1.person2

答案 1 :(得分:-1)

我建议使用LEFT JOIN。如果仅使用JOIN,则默认情况下它将执行INNER JOIN,如果第二表的两列中都不存在您的ID,这将导致您没有返回值。

SELECT *
FROM table1 t1
LEFT JOIN table2 t2a ON t1.people_ID = t2.person1
LEFT JOIN table2 t2b ON t1.people_ID = t2.person2