SQL内部加入两个外键

时间:2016-08-22 19:13:46

标签: sql select inner-join

我有两张桌子(UsersPairs)。 Pairs表包含3列,一个ID,然后是user1ID和user2ID。

用户

ID      firstName      surname
------------------------------
1043    john           doe
2056    jane           doe

ID       user1ID       user2ID
------------------------------
1        1043          2056

然后我会查看使用select语句根据Pairs表的ID获取用户详细信息:

SELECT users1.*, users2.*
FROM Pairs 
JOIN Users users1 ON Pairs.user1ID = users1.IDNumber
JOIN Users users2 ON Pairs.user2ID = users2.IDNumber
WHERE Pairs.ID = 1

这会返回两个用户的正确详细信息,但是它们全部在一行上,如何让每个用户返回到Users表中的单独行?< / p>

2 个答案:

答案 0 :(得分:0)

SELECT users1.*, users2.*
FROM Pairs 
JOIN Users
ON Pairs.user1ID = users.IDNumber
OR Pairs.user2ID = users.IDNumber
WHERE Pairs.ID = 1

只需在ON条件中使用OR语句而不是2个连接。

答案 1 :(得分:0)

IN也会起作用。

SELECT  *
FROM    Pairs p
        JOIN Users u ON u.ID IN (p.user1ID, p.User2ID)
WHERE   p.ID = 1