Tsql 与OR子句有关的问题
我在OR条款上遇到了一些问题。 我正在尝试连接两个大表,下面给出了表中的示例数据 表1(t1)Tsql 与OR子句有关的问题,tsql,Tsql,我在OR条款上遇到了一些问题。 我正在尝试连接两个大表,下面给出了表中的示例数据 表1(t1) vendor addr1 city zip ADT PO BOX 371956 PITSBURGH 15250 表2(t2) 下面给出的前两个select语句显示两个表中的一行数据。 在第三个select中,我有一个OR子句,它不显示任何行。 OR子句不应影响结果集 select * from
vendor addr1 city zip
ADT PO BOX 371956 PITSBURGH 15250
表2(t2)
下面给出的前两个select语句显示两个表中的一行数据。
在第三个select中,我有一个OR子句,它不显示任何行。
OR子句不应影响结果集
select *
from t1
left join t2
on t1.addr1 = t2.addr1
select *
from t1
left join t2
on t1.addr1 = t2.addr1
and (t1.city = t2.city)
下面的选择不显示任何数据。为什么?
select *
from t1
left join t2
on t1.addr1 = t2.addr1
and ((t1.city = t2.city) or (t1.zip = t2.zip))
在上次查询中,您有:
t1.addr1 = t2.addr2 AND
(
t1.city = t2.city OR
t1.zip = t2.zip
)
考虑到您的示例数据:
t1."PO BOX 371956" = t2."PO Box 371956" AND -- TRUE
(
t1."PITSBURGH" = t2."Pittsburgh" OR -- FALSE
t1."15250" = t2."15250-7956" -- FALSE
)
你得到:
= TRUE AND (FALSE OR FALSE)
= TRUE AND FALSE
= FALSE
所以,你没有汤。我注意到的第一件事是,你的or语句是比较拉链和城市,而你之前的语句是比较城市和地址。表中的邮政编码看起来不一样(表一没有连字符部分),城市也不一样(Pit和Pitt的拼写)。如果这是实际数据,那是因为数据不匹配。但它是一个OR子句,而且由于城市匹配,zip是否匹配无关紧要,但是OP query THOW也不应该返回行。
= TRUE AND (FALSE OR FALSE)
= TRUE AND FALSE
= FALSE