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

时间:2011-10-28 01:33:02

标签: sql

给出以下SQL表:

管理员:

id  Name   rating
 1  Jeff      48
 2  Albert    55
 3  Ken       35
 4  France    56
 5  Samantha  52
 6  Jeff      50

会议:

id   originatorid    Assitantid
1              3             5
2              6             3
3              1             2
4              6             4

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

因此输出将是:

id   originatorid    Assitantid
1              3             5
2              6             3

1 个答案:

答案 0 :(得分:5)

如果您真的需要查看Ken的ID列,则只需OR。以下内容将完全生成您的示例输出。

SELECT * FROM Meetings WHERE originatorid = 3 OR Assistantid = 3;

如果您需要使用复杂的路线和列表名称以及会议,则联接的OR子句中的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'