[英]SQL query with joins that are not used in where that return more rows
我正在從一名前員工的SQL Server 2012中處理存儲過程,它是這樣的:
SELECT
t1.colx, t1.coly, t2.colz
FROM
table1 t1
INNER JOIN
table2 t2 ON t2.col2 = t1.col2
INNER JOIN
table3 t3 ON t3.col3 = t2.col3
INNER JOIN
table4 t4 ON t4.col4 = t3.col4
INNER JOIN
table5 t5 ON t5.col5 = t4.col5
WHERE
t1.col6 = 1 AND t2.col7 = 2
我有些事情我不明白:
在WHERE
子句中不使用table4
和table5
時,有什么意義呢? 它對查詢有何好處? 它們也未在SELECT
使用。
當我從查詢中刪除最后2個聯接時, SELECT
返回較少的記錄數。 包括最后2個JOIN
,它返回更多記錄。 怎么樣了 第一個JOIN
在table1
和table2
之間,以及所有其他INNER JOIN
,如果說table1
和table2
之間共有500條記錄,那么最后兩個JOIN
怎么導致查詢返回更多記錄?
謝謝。
1)這迫使在表5中有相應的記錄。 如果記錄不在table5中,則數據不會顯示。
2)這是因為table4和/或table5具有多個連接的行。 這就是為什么使用聯接獲得的記錄多於沒有聯接的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.