首页 > 解决方案 > 条件 JOIN 与自 JOIN

问题描述

我正在尝试在两个不同的列上连接两个表,我想知道以下两种技术是否等效,如果是的话,哪一种在性能方面更好?

用 OR 连接(条件连接)

SELECT *
FROM table1
JOIN TABLE2 ON table1.value = table2.HighValue
OR table1.value = table2.LowValue

使用自我加入

SELECT *
FROM TABLE1
JOIN table2 t2 ON table1.value = t2.HighValue
JOIN table2 t3 ON table1.value = t3.LowValue

标签: sql-serverself-join

解决方案


这两个查询不等价,第一个等价于

SELECT *
FROM table1
JOIN TABLE2 ON table1.value = table2.HighValue

UNION 

SELECT *
FROM table1
JOIN TABLE2 ON table1.value = table2.LowValue

推荐阅读