连接空表以返回所有行

时间:2011-03-21 16:55:13

标签: sql sql-server sql-server-2005 tsql

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

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

我知道,我只需要加入它。但我说得不对。

由于

4 个答案:

答案 0 :(得分:18)

SELECT * FROM Table1 T1
LEFT JOIN Table2 T2 ON T1.Id = T2.FK

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

答案 1 :(得分:5)

您需要外部联接

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

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

答案 2 :(得分:1)

您需要LEFT JOIN

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

尝试一下。

答案 3 :(得分:0)

使用LEFT JOIN加入您的表格。请参阅SQL SERVER JOINS 以了解这一概念。