假设你有一个类似的查询:
Select A.column1, A.column2, B.column3
from Table1 as A left join Table2 as B
on (A.column1=B.column3 or A.column2=B.column3)
这与两个查询的串联相同:
Select A.column1, A.column2, B.column3
from Table1 as A left join Table2 as B
on (A.column1=B.column3)
Select A.column1, A.column2, B.column3
from Table1 as A left join Table2 as B
on (A.column2=B.column3)
或者决赛桌会有差异吗?
答案 0 :(得分:1)
这两个查询将具有相同的结果集:
Select DISTINCT A.column1, A.column2, B.column3
from Table1 A left join
Table2 as B
on A.column1 = B.column3 or A.column2 = B.column3;
和
Select A.column1, A.column2, B.column3
from Table1 A left join
Table2 B
on A.column1 = B.column3
union -- Note: NOT UNION ALL
Select A.column1, A.column2, B.column3
from Table1 A left join
Table2 B
on A.column2 = B.column3 ;
如果没有distinct
和union
,您可能会在查询之间出现(或不存在)各种重复项。
答案 1 :(得分:0)
我认为你的意思与表的联合相同,因为SQL中没有连接
不,它们不会相同 - 如果有A.column1 = B.column3
和A.column2 = B.Column3
答案 2 :(得分:0)
是使用UNION或UNION ALL取决于您想要的结果(UNION ALL更快但可能包含重复项)。任何一个通常使用OR更快。只需确保为两者运行结果集,然后选择与原始查询具有相同结果的结果集。