我们有一个场景,我们想要所有满足内部连接的数据,即使连接条件失败,也要多一条记录。 要包括我们有主键值的那条不匹配的记录,我们不能应用左连接,因为它包括左表中所有不匹配的记录,但我们只对 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
您可以尝试使用
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)
看演示在这里
您可以使用 union 将两个查询视为一个查询。
select t1.*
from table1 t1
join table2 t2 on t1.id = t2.id
union
select *
from table1
where id = 3