SQL Server 连接到表,如果不匹配则连接到另一个表

5anewei6  于 2023-01-08  发布在  其他
关注(0)|答案(2)|浏览(212)

我需要连接到一个表,如果没有匹配的连接到另一个表。
主表- A
| 身份证|代码|数据ID|
| - ------|- ------|- ------|
| 1个|种皮|一百二十三|
| 第二章|测试b|四百五十六|
表- B
| 伊德布|代码|数据ID|
| - ------|- ------|- ------|
| 二十二|种皮|一百二十三|
表- C
| 伊德布|代码|数据ID|
| - ------|- ------|- ------|
| 三十三|测试b|四百五十六|
在上面的示例数据中,我需要结果集为:
| 身份证|代码|数据ID|伊德布|
| - ------|- ------|- ------|- ------|
| 1个|种皮|一百二十三|二十二|
| 第二章|测试b|四百五十六|三十三|
我试过将表A左连接到表B。这给了我第二条记录的空DataId-这是可以理解的。我可以对表C再做一次左连接。这是正确的方法吗?或者连接到一个表,如果没有匹配,连接到另一个表可行吗?

o0lyfsai

o0lyfsai1#

我在两个表和coalesce列上都保留了join:

SELECT    a.*, COALESCE(b.idb, c.idb)
FROM      a
LEFT JOIN b ON a.code = b.code
LEFT JOIN c ON a.code = c.code
gr8qqesn

gr8qqesn2#

如果您想返回匹配记录,可以使用INNER JOIN SQL语句,它将动态查找给定表之间的匹配行,并返回匹配记录,如以下代码和平:

SELECT * FROM `table_a` INNER JOIN `table_b` ON table_a.code = table_b.code INNER JOIN `table_c` ON table_a.code = table_c.code

相关问题