2011-12-06 46 views
-2

可能重複:
Is it better to do an equi join in the from clause or where clause什麼是這兩個SQL查詢之間的區別 - SQL服務器

我有以下兩個SQL查詢。你能向我解釋一下這兩者之間的區別嗎?

QUERY:1

SELECT a.*, b.* 
FROM Table1 a 
INNER JOIN Table2 b 
ON a.id = b.id 
AND a.col = 'value' 

QUERY:2

SELECT a.*, b.* 
FROM Table1 a 
INNER JOIN Table2 b 
ON a.id = b.id 
WHERE a.col = 'value' 

由於

+0

這對於一個'INNER JOIN'來說唯一的區別就是如果你正在使用'GROUP BY ALL' –

+0

@MartinSmith對這個謎題有很好的理解,我找不到一個 – JNK

回答

4

沒什麼除非情況下靈敏度被接通的數據庫

+0

我正在尋找AND和WHERE條件。我必須使用哪一個以及何時使用? – user1054625

2

上對於INNER JOIN,過濾上JOIN條件與篩選WHERE子句應該給出相同的結果。

如果這是一個OUTER JOIN,結果會有所不同,因爲第一個結果在JOIN條件之前預先過濾源表中的結果。

0

是的,一切都差不多。如果您的ID字段拼寫不正確,區分大小寫的數據庫將返回錯誤。

1

在這種特殊情況下,它是相同的結果,但它不是一回事。 WHERE適用於整個選擇,而ON ... AND僅適用於內連接(實際上可能是同一件事,但不適用於外連接)

0

區別純粹是文體。就我個人而言,我喜歡在「JOIN ... ON a = b」部分下放置執行表連接的關鍵子句,並將與我的特定查詢過濾相關的子句放在「WHERE」子句下面。沒有任何技術理由可以這樣做,只要你在談論內部連接。