iT邦幫忙

0

SQL Join和Where條件句

  • 分享至 

  • xImage

假設有兩張表
Table A: ID, Name, Salary
Table B: ID, Department
我想要把兩張表Join在一起
並且加上兩個條件句

Salary>'50000'
Department='IT'

想要請問以下兩種寫法是否有所差異

SELECT * 
FROM A
JOIN B ON A.ID=B.ID
WHERE 
A.Salary > '50000'
B.Department = 'IT'
SELECT * 
FROM A, B
WHERE 
A.ID=B.ID
A.NUMBER > '50000'
B.Department = 'IT'

我遇到一個類似的case是用第二種寫法
但有時候系統會跑不出結果
我在想會不會是Join寫法的問題
謝謝

jsgao0 iT邦新手 5 級 ‧ 2016-12-02 08:40:35 檢舉
WHERE後面的條件似乎少了運算子AND或OR?
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

3
做工仔人!
iT邦大師 1 級 ‧ 2016-12-02 08:58:33
  1. 2 的寫法少了 AND 做串接.正確的應該是:
    SELECT * FROM A, B WHERE A.ID=B.ID **AND** A.NUMBER > '50000' **AND** B.Department = 'IT'
  2. 樓主的疑問應該是:
    有沒有下 JOIN 的差別 ?
    其實這二個語法並沒有錯別.(如果早期的SQL 版本可能會造成 2 的語法無法執行-版本差異).

正確的說法應該是: JOIN 是正規的語法. 在 WHERE 中用= 的語法是後來簡化出來的語法.
對照一下:

INTER JOIN => A.ID=B.ID  
LEFT JOIN  => A.ID=B.ID(+)  
RIGTH JOIN => A.ID(+)=B.ID   
FULL JOIN  => 不知 (因為很少下,所以不知, 會不會 A.ID(+)=B.ID(+)? )   

建議:   
如果可以會建議用: JOIN 語法.
因為正規(就不用耽心版本問題)而且容易讀.

我要發表回答

立即登入回答