- 查询1
select distinct af.Code from AIR af inner join
Float spf on spf.Station = af.AirID or
spf.DeptStation = af.AirID
- 查询2
select distinct af.Code from AIR af
inner join Float spf on spf.Station = af.AirID
inner join Float spf1 on spf.DeptStation = af.AirID
在第一个查询中,与第二个相比,我得到了更多的条目(大约10个)。按照我的说法,这种差异不应该存在。如果有人可以分解查询以告诉我差异(如果有的话),那将会有所帮助。
答案 0 :(得分:0)
此查询:
select distinct af.Code from AIR af
inner join Float spf on spf.Station = af.AirID
inner join Float spf1 on spf1.DeptStation = af.AirID
等于“和”加入
select distinct af.Code from AIR af
inner join Float spf on spf.Station = af.AirID and spf.DeptStation = af.AirID
修改强> 您的第二个查询出错了。它应该是
内部连接spf1.DeptStation上的浮点spf1 = af.AirID
答案 1 :(得分:0)
在第二个查询中,您将一个AirID前排与两个不同的值同时匹配(AND) 因此,JOIN仅在两者匹配时给出结果,这当然是无意义的。
在第一个查询中,您将一个AirID与 一个<2>个不同列(OR)匹配 因此,当您匹配 值
时,您会得到正确的结果你可以重写第一个,这可能有助于演示OR-ness
select af.Code from AIR af
inner join Float spf on spf.Station = af.AirID
UNION
select af.Code from AIR af
inner join Float spf on spf.DeptStation = af.AirID