2013-12-18 20 views
0

我想顯示Table_A中的所有數據,並且只顯示Table_B表右側的那些數據。我有2個表是這樣的: TABLE_A:在SQL中使用LEFT OUTER JOIN的問題

ID FAC_ID QUESTION  ACTION_ITEM 
1  222  what?  do... 
5  245  when?  make.. 
9  325  vcc   kjy 
11  145  kne   juy 

表-B:

ID FAC_ID QUESTION  ACTION 
5  245  when?  make.. 

當我運行我的SQL語句,我想說明是這樣的:

ID FAC_ID QUESTION  ACTION_ITEM 
1    what?   do... 
5  245  when?  make.. 
9    vcc   kjy 
11    kne   juy 

但我的代碼,它只顯示ID = 5的一行數據。這是我的代碼:

select A.ID, B.FAC_ID, A.QUESTION, A.ACTION_ITEM 
FROM TABLE_A A LEFT JOIN 
TABLE_B B ON A.ID=B.ID 
WHERE FAC_ID = 245 
+0

你的where子句告訴它只顯示1條記錄。您還需要解決此問題,因爲FAC_ID在兩個表中,並且此查詢甚至不起作用。 – liebs19

回答

0

您的查詢沒有任何意義 - 你的where子句將限制這一行,根據您的數據,其中ID = 5

我想你可能需要:

SELECT A.ID, B.FAC_ID, A.QUESTION, A.ACTION_ITEM 
FROM TABLE_A A 
LEFT OUTER JOIN TABLE_B B 
    ON A.ID=B.ID 

如果您在ID = 5上進行過濾(假設FAC_ID = 5在您的問題中是一個錯字),您將只會得到一行。

1

您正在WHERE子句中引用來自表B的列。將其移至JOIN。

其實,你發佈的例子甚至不會編譯,因爲FAC_ID是不明確的。

+0

對不起,我修改了FAC_ID – moe

0

在其中將其轉化爲與內部連接

select A.ID, B.FAC_ID, A.QUESTION, A.ACTION_ITEM 
FROM TABLE_A A 
LEFT JOIN TABLE_B B 
    ON A.ID = B.ID 
    AND B.FAC_ID = 245 

在哪裏,B.FAC_ID = 245消除了任何B.FAC_ID爲空,基本上把它變成一個腸子加入