2011-10-28 43 views
1

考慮下面的SQL表是:SQL比較兩個表與普通ID,但在表2中的ID可以在兩個不同的列

管理員:

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 

回答

4

如果你真的只需要看到肯的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' 
+0

我有一個問題,雖然。有沒有辦法使用「IN」選擇器與OR結合?不是在這種情況下......但是在中間有一個額外的表格:管理員+會議+會議室(僅用於學習目的)。 –

+0

我的評論不清楚我不得不問另一個問題,我猜。 –

+0

@ user903645 IN()用於比較單個列與多個可能的可接受值。將其強制爲多列的唯一方法是參與一些棘手的聯合和UNION查詢以將多列的內容轉換爲一列。 –