2013-04-25 91 views
2

當特定列的值與tableY中相應列的值匹配時,我試圖顯示tableX數據的幾列。基於多個表和列的SQL條件數據顯示

假設我們有2個表:一個名爲person包含一個名爲membershipid列,另一個叫tasks包含名爲memberid列。在這種情況下,顯示該條件的記錄將是如下:關於person = memberid

membershipidtasks

這是否需要使用JOIN子句的或我仍然可以使用WHERE關鍵字的呢?

感謝您的關注。

+0

您正在使用哪些DBMS? Postgres的?甲骨文? – 2013-04-25 21:52:33

+0

我正在使用Postgres進行此設置。 – speshock 2013-04-25 21:53:54

+0

@speshock下面的答案有助於回答你的問題嗎? – 2013-06-05 14:43:19

回答

2

從我對你的問題的理解中,聽起來像是的,你需要一個INNER JOIN才能從tableX中抽出行,其中在tableY的加入列中有一個匹配值。

因此,像:

SELECT tableXcol1, tableXcol2, tableXcol3 
FROM tableX 
INNER JOIN tableY 
ON tableX.specific_column = tableY.specific_column 
1

儘管它可以與where條款來完成,我會建議你使用連接。

where風格(不推薦)

select t1.field1, t1.field2, ... 
from aTable as t1, anotherTable as t2 
where t1.field1 = t2.field1; 

join風格(推薦)

select t1.field1, t1.field2, ... 
from aTable as t1 inner join anotherTable as t2 on t1.field1 = t2.field1 
1

如果你只需要從TableX的而不是從tableY數據,做一個JOIN可能會給你重複的數據。改爲使用EXISTS,例如

SELECT person.col1, person.col2 
FROM person 
WHERE 
    EXISTS (
     SELECT 1 
     FROM tasks 
     WHERE 
      person.membershipid = tasks.memberid 
    )