以這兩個例子表:Oracle SQL - 連接不存在的行嗎?
Table A
Name FirstOrLast
Jeremy First
Smith Last
Mark First
David First
Table B
Name
Jeremy
Smith
Mark
David
Jones
Jack
我想輸出是這樣的:只輸出的名字,但如果如果它是一個姓或名,輸出也無妨表A不記錄。正確的輸出爲:
Jeremy
Mark
David
Jones
Jack
我試圖實現這一點與外連接,就像這樣:
select
B.Name
from
A, B
where
A.name = B.name(+) and
A.FirstOrLast = 'First';
,但沒有運氣。我怎樣才能做到這一點?
這很好。兩個問題:爲什麼「標準」語法更好(我的公司使用(+)語法,但我對sql很新,所以我願意改變我的樣式)。二,你能解釋一下A.name = B.name(+)在這裏完成的事情嗎? – Jeremy 2012-02-06 22:22:47
@Jeremy舊的語法只適用於Oracle;新的語法適用於大多數現代RDBMS。在SQL進行了標準化之前,RDBMS供應商爲此定義了自己的語法:例如,Sybase使用了'A.name * = B.name'。外連接標記'(+)'表示「即使右邊的行不存在,也不要刪除左邊的行」。 – dasblinkenlight 2012-02-06 22:26:30