SQL Server SQL连接三个表,从第二个表获取值,如果为空,则从第三个表获取值

xu3bshqb  于 2022-12-17  发布在  其他
关注(0)|答案(1)|浏览(190)

我正在使用SQL Server 2019。
我有三个表。我想使用内部连接从第二个表中获取值,但是如果第二个表中的值不存在,那么应该从第三个表中检索值。

我使用了下面的SQL,但是没有返回数据。

Select
Table1.ID,
Case
    When Table2.Value2 Is Not Null Then Table2.Value2
    Else Table3.Value3
End as Value
from Table1
Inner Join Table2 On Table1.ID = Table2.ID2
Inner Join Table3 On Table1.ID = Table3.ID3

我在谷歌上搜索了一下,但找不到答案。任何帮助都很感激,谢谢。

3pmvbmvn

3pmvbmvn1#

我们可以在这里使用COALESCE()函数:

SELECT t1.ID, COALESCE(t2.Value2, t2.Value3) AS Value
FROM Table1 t1
LEFT JOIN Table2 t2 ON t1.ID = t2.ID2
LEFT JOIN Table3 t3 ON t1.ID = t3.ID3;

如果第二个表没有匹配的ID,则需要左联接而不是内联接。在这种情况下,查询将保留第一个表中的所有ID,并提供从第三个表中匹配的机会。

相关问题