首页 > 解决方案 > 在两个不同的列上连接表

问题描述

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_1Owner_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). 

这个查询不会给出我期望的输出。

标签: mysqljoin

解决方案


你可以尝试这样的事情:

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

您将立即归还所有这些。


推荐阅读