MSSQL - INNER JOIN之后的复合WHERE子句?

时间:2017-07-07 19:38:19

标签: sql sql-server

我有这个问题:

select *
from table1 d inner join table2 s on d.SOME_ID = s.SOME_ID 
where s.col1 = 'THIS' AND s.col2 = 'THAT'

返回的内容与此相同:

select *
from table1 d inner join table2 s on d.SOME_ID = s.SOME_ID 
where s.col1 = 'THIS'

也就是说,它似乎忽略了WHERE的第二部分。

如果我这样做:

select *
from table2 s 
where s.col1 = 'THIS' AND s.col2 = 'THAT'

一切正常,结果会被两种资格过滤掉。

我错过了这个联接的东西吗?

编辑:

两个表都有' col2',两者的值相同(巧合)。有趣的是,这有效:

select *
from table1 d inner join table2 s on d.SOME_ID = s.SOME_ID 
where s.col1 = 'THIS' AND d.col2 = 'THAT'

返回满足两个限定符的单行。这有助于任何人弄清楚发生了什么吗?

EDIT2:

这是在黑暗中拍摄的。由于两个表都包含' col2'如果,连接是否会丢弃table2.col2列以生成连接?因此,当我通过新表中未包含的列的限定条件过滤结果连接时,它们都通过了?

0 个答案:

没有答案