我有一个表(Table1),它有一个复合主键(Column1 + Column2)。我将它用作另一个表(表2)中的外键。
现在我想要一个 SELECT 语句来选择 Table1 和 Table2 中的所有记录。 但它返回 0 行,因为 table2 是空的。我想要表1中的所有记录,如果表2中不存在,则表2中的列的值应该为空。
我知道,我只需加入即可。但我没搞清楚。
谢谢
SELECT * FROM Table1 T1
LEFT JOIN Table2 T2 ON T1.Id = T2.FK
FK 是第二个表上的外键。 左连接将返回 table1 中的所有行,即使它们不存在于 table2 中。
你需要一个外连接
SELECT *
FROM table1
LEFT OUTER JOIN table2
ON table1.column1 = table2.column1
AND table1.column2 = table2.column2
Left
表示保留查询中左(第一个)表中的所有行。
你需要一个
LEFT JOIN
SELECT Table1.*, Table2.*
FROM Table1
LEFT JOIN Table2 ON Table1.Column1 = Table2.Column2
尝试一下。
更改桌子的位置 例如,如果 t1 是空数据: 从 t1 左连接 t2 中选择 t1.a,t2.a t1.a=t2.a 你改为: 从 t2 中选择 t1.a,t2.a 将 t1 左连接到 t1.a=t2.a