首页 > 解决方案 > 连接到 SQL Server 中的不同列

问题描述

我在 Table1 下面有一个主表:

Name                ID      Entry_Dt
PEREZ               2000        8/14/2014 
PEREZ               2000        8/29/2017 
Domingo             2098        8/29/2017 

我在下面还有另一个表2:

kid_id  Parent_id   
2098    2000        

我想要这样的结果:

Name     Kid_id     Parent_id   Entry_dt
PEREZ               2000        8/14/2014
PEREZ               2000        8/29/2017
Domingo   2098                  8/29/2017

我使用了两种不同的方法,例如下面的示例,但结果并不理想。

1:联合法

select *
FROM Table1 A INNER JOIN Table2 b
ON A.ID= B.Kid_id
union
select *
FROM Table1 A INNER JOIN Table2 b
ON A.ID= B.Parent_id

2:左连接方法:

select *
FROM Table1 A LEFT JOIN Table2 b
ON (A.ID= B.Kid_id or A.ID = B.Parent_id)

为什么我的方法不起作用?有什么改进的想法吗?

标签: sqlsql-serverleft-join

解决方案


您必须链接两个 distinct JOINs,第一个是LEFT JOIN父母的 a (如果存在),第二个是LEFT JOIN孩子的 a too (如果存在)。

因此,您在字段列表中将kind_id/公开parent_id为两个不同的列

尝试这个:

SELECT main.name, main.id, kid.Kid_id, parent.parent_id, main.Entry_dt
FROM Table1 main
LEFT JOIN Table2 kid
ON main.id = kid.Kid_id
LEFT JOIN Table2 parent
ON main.id = parent.Parent_id

请参阅SQL 小提琴


推荐阅读