簡體   English   中英

SQL查詢的聯接不用於返回更多行的地方

[英]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 

我有些事情我不明白:

  1. WHERE子句中不使用table4table5時,有什么意義呢? 它對查詢有何好處? 它們也未在SELECT使用。

  2. 當我從查詢中刪除最后2個聯接時, SELECT返回較少的記錄數。 包括最后2個JOIN ,它返回更多記錄。 怎么樣了 第一個JOINtable1table2之間,以及所有其他INNER JOIN ,如果說table1table2之間共有500條記錄,那么最后兩個JOIN怎么導致查詢返回更多記錄?

謝謝。

1)這迫使在表5中有相應的記錄。 如果記錄不在table5中,則數據不會顯示。

2)這是因為table4和/或table5具有多個連接的行。 這就是為什么使用聯接獲得的記錄多於沒有聯接的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM