连接空表以返回所有行

Sco*_*ion 9 sql t-sql sql-server sql-server-2005

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

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

我知道,我只需加入它.但我没有把它做对.

谢谢

Hal*_*han 20

SELECT * FROM Table1 T1
LEFT JOIN Table2 T2 ON T1.Id = T2.FK
Run Code Online (Sandbox Code Playgroud)

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


Mar*_*ith 6

你需要一个外部联接

SELECT *
FROM   table1
       LEFT OUTER JOIN table2
         ON table1.column1 = table2.column1
            AND table1.column2 = table2.column2  
Run Code Online (Sandbox Code Playgroud)

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