即使内部连接条件失败,如何获得一行?

问题描述 投票:0回答:2

我们有一个场景,我们想要所有满足内部连接的数据,即使连接条件失败,也要多一条记录。 要包括我们有主键值的那条不匹配的记录,我们不能应用左连接,因为它包括左表中所有不匹配的记录,但我们只对 1.

感兴趣

例如。我们有一个主键值 Id = 3.

表一:

Table1_ID   Table1_Name
   1          Test
   2          Test_1
   3          Test_2

表二:

Table2_ID   Table2_Name
   1          Test

预期结果:

  ID    Name
  1      Test
  3      Test3
sql sql-server join inner-join
2个回答
0
投票

您可以尝试使用

LEFT JOIN
,然后在
WHERE
条件下过滤不匹配的记录

SELECT t1.Table1_ID AS ID, t1.Table1_Name AS Name
FROM Table1 t1
     LEFT JOIN Table2 t2 ON (t1.Table1_ID = t2.Table2_ID)
WHERE (t2.Table2_ID IS NOT NULL OR t1.Table1_ID = 3) 

看演示在这里


0
投票

您可以使用 union 将两个查询视为一个查询。

select t1.*
from table1 t1
join table2 t2 on t1.id = t2.id

union

select *
from table1
where id = 3
© www.soinside.com 2019 - 2024. All rights reserved.