mysql - 在两个不同的列上连接表
问题描述
Table 1 Bus_ID Owner_ID #owners in Bus
12345 5558 3
12345 5856 3
52858 **7894** 1
12345 1254 3
Table 2 Owner_1 Owner_2 Relationship
5558 5856 Parent of Owner_1
5558 1254 Parent of Owner_1
1254 5856 Spouse
5856 1254 Spouse
**7894** 6868 Spouse
6868 **7894** Spouse
我有两张桌子我想一起加入。只能加入Owner_ID = Owner_1
或Owner_ID = Owner_2
。我想最终得到Owner_ID
表 1 aswel 中的内容。
我的预期结果:
Bus_ID Owner_ID Owner_1 Owner_2 Relationship
12345 5558 5558 5856 Parent of Owner_1
12345 5558 5558 1254 Parent of Owner_1
12345 5856 5856 1254 Spouse
12345 1254 1254 5856 Spouse
如您所见,如果 Owner_ID 没有出现在表 1 中,我不希望它出现在联合表中,但是当加入7894时,因为表 2 中存在关系,无论如何它都会以我加入它们的方式出现。我需要帮助加入这两个表。
select Bus_ID, Owner_ID, Owner_1, Owner_2, Relationship from table 1
join table 2 on (Owner_ID = Owner_1 AND Owner_ID = Owner_2).
这个查询不会给出我期望的输出。
解决方案
你可以尝试这样的事情:
select
Bus_ID, Owner_ID, Owner_1, Owner_2, Relationship
from table 1
inner join table 2 on Owner_ID = Owner_1
UNION
select
Bus_ID, Owner_ID, Owner_1, Owner_2, Relationship
from table 1
inner join table 2 on Owner_ID = Owner_2
这样你会得到:
- 遵守条件的所有行
Owner_ID = Owner_1
- 遵守条件的所有行
Owner_ID = Owner_2
您将立即归还所有这些。
推荐阅读
- firebase - 如何在 BigQuery 中合并 Google Ads 和 Firebase 数据
- android - 无法在华为和三星手机上更改可绘制颜色(色调)
- d3.js - tickSizeOuter 不等于零,但仅 yAxis 的第一个和最后一个刻度显示行
- java - Java 中的急切加载是什么?
- asp.net - EPPlus - 无法从 excel 中获取 NPV 和 IRR 函数的值
- iis - IIS 服务器是不是反映了变化?
- azure-data-factory - AzureDataFactory 如何存储过滤器操作的输出
- java - 如何通过 Springboot 服务的 2 个实例从共享位置并行访问文件?
- akka-http - akka-http中的拒绝和异常有什么区别
- reactjs - 使用 React 的 Azure Bot Framework 出现问题