SQL将两个表与公共ID进行比较,但表2中的id可能位于两个不同的列中

Alf*_*mpo 2 sql

给定以下SQL表:

管理员:

id  Name   rating
 1  Jeff      48
 2  Albert    55
 3  Ken       35
 4  France    56
 5  Samantha  52
 6  Jeff      50
Run Code Online (Sandbox Code Playgroud)

会议:

id   originatorid    Assitantid
1              3             5
2              6             3
3              1             2
4              6             4
Run Code Online (Sandbox Code Playgroud)

我想根据Ken的观点(id = 3)生成一个表,因此他的id可能出现在会议表中的两个不同列中.(由于我引入了两个不同的字段列,因此语句IN不起作用).

因此输出将是:

id   originatorid    Assitantid
1              3             5
2              6             3
Run Code Online (Sandbox Code Playgroud)

Mic*_*ski 5

如果你真的只需要知道Ken的id是哪一列,你只需要一个OR.以下将完全生成您的示例输出.

SELECT * FROM Meetings WHERE originatorid = 3 OR Assistantid = 3;
Run Code Online (Sandbox Code Playgroud)

如果您需要将复杂的路径和列表名称与会议一起使用,则OR在您的join ON子句中应该可以使用:

SELECT 
  Administrators.name,
  Administrators.id,
  Meetings.originatorid,
  Meetings.Assistantid
FROM Administrators
   JOIN Meetings 
     ON Administrators.id = Meetings.originatorid 
     OR Administrators.id = Meetings.Assistantid
Where Administrators.name = 'Ken'
Run Code Online (Sandbox Code Playgroud)