【发布时间】:2020-07-17 02:58:09
【问题描述】:
我有 2 个表格,下面是列
表1
col1 col2 col3 val
11 221 38 10
null 90 null 989
78 90 null 77
表2
col1 col2 col3
12 221 78
23 null 67
78 90 null
如果值匹配,我想首先在 col1 上加入这 2 个表,如果不匹配,则停止在 col2 上加入柱子。所以,输出应该是这样的:
col1 col2 col3 val matchingcol
11 221 38 10 col2
null 90 null null null
78 90 null 77 col1
我可以使用下面的查询来做到这一点,但性能很慢。请让我知道下面是否有更好的写作方式以获得更快的性能
select *
from table1 t1 left join
table2 t2_1
on t2_1.col1 = t1.col1 left join
table2 t2_2
on t2_2.col2 = t1.col2 and t2_1.col1
left join table2 t2_3 on t2_3.col3 = t1.col3 and t2_2.col2 is null
ps:我之前问过同样的问题,但没有更好的答案
【问题讨论】:
-
你能解释一下为什么你认为 Table1 的第二行不匹配,因为 col2 = 90 并且 Table2 的第三行也有 col2 = 90?