Sql 在两个不同的列上连接
我想将表1连接到表2的两个不同列上。 到目前为止,我有一个:Sql 在两个不同的列上连接,sql,join,Sql,Join,我想将表1连接到表2的两个不同列上。 到目前为止,我有一个: Table 1 people_ID TypePerson ---------------------------- 5525 person1 6250 person2 5897 person2 2584 person1 Table2 person1 person2 ---------------------
Table 1 people_ID TypePerson
----------------------------
5525 person1
6250 person2
5897 person2
2584 person1
Table2 person1 person2
----------------------
5525 5897
2584 6250
我知道事实上这是不正确的,但我不知道如何继续。有更多的变量,但我只能加入这些,所以我忽略了其他变量
求救 试试这个查询
select *
from table1 join
table2
on people_ID = person1
我建议使用左连接。如果您只是使用JOIN,那么默认情况下它会执行一个内部联接,如果您的ID在第二个表的两列中都不存在,那么这将导致您得不到任何返回值
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
使用不同的别名连接同一个表两次。请阅读编辑帮助并执行操作,查看格式化的帖子并查看其编辑方式。请阅读并采取行动。这包括预期产出。在表2的两个不同列上连接表1不清楚。解释一下你所看到的例子和你想要的是什么样的?请参阅谷歌搜索“stackexchange家庭作业”。示例数据很好,但也指定了预期结果。您预期的结果是什么?
SELECT *
FROM table1 t1
LEFT JOIN table2 t2a ON t1.people_ID = t2.person1
LEFT JOIN table2 t2b ON t1.people_ID = t2.person2