我正在从一名前雇员处理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
有几件我无法理解的事情:
在table4
条款中未使用table5
和WHERE
时,加入SELECT
和SELECT
有什么意义?它如何使查询受益?它们也未在JOIN
中使用。
当我从查询中删除最后2个连接时,JOIN
返回的记录数量减少。包含最后2 table1
后,它会返回更多记录。那是怎么回事?如果在table2
和INNER JOIN
之间共有500条记录,那么首先table1
介于table2
和JOIN
之间以及所有其他{{1}} s,为什么最后两个{{1}}会导致查询返回更多记录?
感谢。
答案 0 :(得分:3)
1)这迫使表5中有相应的记录。如果记录不在表5中,则数据不会显示。
2)这是因为table4和/或table5有多个连接的行。这就是为什么你在连接中获得的记录多于没有连接的原因。