sql-server - 条件 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
解决方案
这两个查询不等价,第一个等价于
SELECT *
FROM table1
JOIN TABLE2 ON table1.value = table2.HighValue
UNION
SELECT *
FROM table1
JOIN TABLE2 ON table1.value = table2.LowValue
推荐阅读
- php - Header("location: $random_link") 重定向问题 PHP
- android - StreamBuilder 为每次更新构建两次快照
- php - 防止将重叠的时间戳范围插入数据库
- php - 有条件地将附加“meta_query”数组附加到 WP_Query 的最佳方法是什么
- android - 不能将模型实体用于房间。尝试了以下构造函数,但它们未能匹配
- javascript - 随机问题顺序
- graphql - GraphQL,Apollo 服务器联合模式
- php - 如何将新列数据保存到 laravel 数据透视表中?
- mysql - 如何确保多对多关系具有相同的外键
- c++ - 将 Win32 对话框中的图标设置为默认图标