MSSQL与自身连接
我有两张桌子:MSSQL与自身连接,sql,sql-server,Sql,Sql Server,我有两张桌子: id 1 2 3 4 t1和t2 id | related_id 1 | 2 1 | 3 其中t2是t1记录之间的关系表。获得期望输出的最佳方法是什么 t1.id | t1_copy.id 1 | NULL -- want to get this NULL row 1 | 2 1 | 3 简单的JOIN几乎可以工作,但是它没有给我第一行NULL行 SELECT t1.id, t1_copy.id FROM t1 LEFT JOIN t2 ON t
id
1
2
3
4
t1和t2
id | related_id
1 | 2
1 | 3
其中t2是t1记录之间的关系表。获得期望输出的最佳方法是什么
t1.id | t1_copy.id
1 | NULL -- want to get this NULL row
1 | 2
1 | 3
简单的JOIN
几乎可以工作,但是它没有给我第一行NULL
行
SELECT t1.id, t1_copy.id FROM t1
LEFT JOIN t2 ON t1.id = t2.id
LEFT JOIN t1 t1_copy ON t1_copy.id = t2.related_id
WHERE t1.id = 1
附言:是的,我确实意识到期望的产出是古怪的。似乎一个简单的联盟就应该做到这一点
SELECT
id,
null as copy_id
FROM
t1
WHERE
exists (select * from t2 where t1.id = t2.id)
UNION ALL
SELECT
t1.id,
t2.related_id
FROM
t1
INNER JOIN t2
ON t1.id = t2.id
你想实现什么目标?如果
t2
中有一行,NULL
应该在4
记录的位置吗?@voithos,NULL
应该在那里,在我的查询中添加了where
子句来澄清。这可能是错误的,但我也不认为这会正常工作。
SELECT DISTINCT t1.id, t1_copy.id FROM t1
LEFT OUTER JOIN t2 ON t1.id = t2.id
WHERE t1.id = 1