加入空表以返回所有行

问题描述 投票:0回答:5

我有一个表(Table1),它有一个复合主键(Column1 + Column2)。我将它用作另一个表(表2)中的外键。

现在我想要一个 SELECT 语句来选择 Table1 和 Table2 中的所有记录。 但它返回 0 行,因为 table2 是空的。我想要表1中的所有记录,如果表2中不存在,则表2中的列的值应该为空。

我知道,我只需加入即可。但我没搞清楚。

谢谢

sql sql-server sql-server-2005 t-sql
5个回答
31
投票
SELECT * FROM Table1 T1
LEFT JOIN Table2 T2 ON T1.Id = T2.FK

FK 是第二个表上的外键。 左连接将返回 table1 中的所有行,即使它们不存在于 table2 中。


6
投票

你需要一个外连接

SELECT *
FROM   table1
       LEFT OUTER JOIN table2
         ON table1.column1 = table2.column1
            AND table1.column2 = table2.column2  

Left
表示保留查询中左(第一个)表中的所有行。


1
投票

你需要一个

LEFT JOIN

SELECT Table1.*, Table2.*
FROM Table1
LEFT JOIN Table2 ON Table1.Column1 = Table2.Column2

尝试一下。


0
投票

使用

LEFT JOIN
加入您的桌子。请参阅 SQL SERVER JOINS 了解该概念。


0
投票

更改桌子的位置 例如,如果 t1 是空数据: 从 t1 左连接 t2 中选择 t1.a,t2.a t1.a=t2.a 你改为: 从 t2 中选择 t1.a,t2.a 将 t1 左连接到 t1.a=t2.a

© www.soinside.com 2019 - 2024. All rights reserved.