sql - 在 ON 子句中使用 OR 在一个或其他列上的完整外部连接表
问题描述
我想对 2 个表进行完全外连接 - Table_A 和 Table_B 在 2 列 Unique_ID1 或 Unique_ID2 - 因为某些行可能在一个上匹配,而另一些在另一个上,我无法确定这一点。
我试过这个 -
Select *
from Table_A
full outer join Table_B on Table_A.Unique_ID1 = Table_A.Unique_ID1
OR Table_A.Unique_ID2 = Table_A.Unique_ID2
虽然这没有给我任何错误,但查询会永远运行。重新构造它以获得所需输出的最佳方法是什么?
解决方案
你的条件总是被评估为真,因为你有来自Table_A
相等检查两侧的列,产生一个完整的笛卡尔积。用 替换等式的一侧Table_B
,你应该没问题:
SELECT *
FROM Table_A
FULL OUTER JOIN Table_B ON Table_A.Unique_ID1 = Table_B.Unique_ID1 OR
-- Here ----------------------------------------------^
Table_A.Unique_ID2 = Table_B.Unique_ID2
-- And here ------------------------------------------^
推荐阅读
- java - Android 等待毕加索完成
- arrays - 在 Bigquery 中取消嵌套多个数组并再次聚合
- android - 使用共享首选项存储按钮状态有效,但当我离开应用程序时按钮名称会更改
- node.js - loopback4 应用程序中数据源的环境特定配置
- android - Firebase 检索到的文档/集合为空且没有错误
- php - 从php中的响应中删除外部方括号
- angular - Angular 9 HttpClient:一次调用时忽略标头
- python - 是否可以在启用 2 因素身份验证的组织中克隆存储库?
- html - SVG没有填充移动视图上的整个视口
- sql - 如何在sql中创建三元关系