在sql语句中关键字'或'的任何替代方法?

时间:2010-10-08 15:28:03

标签: sql sql-server tsql

我可能没有说出正确的问题,因为'或'而我的查询需要花费大量时间。

select stuff 
from table1 T1
left join table2 T2 on T2.field1 = T1.field or T2.field2 = T1.field
where some condition

我必须检查两个字段才能加入。有更好的方法吗?

3 个答案:

答案 0 :(得分:3)

根据所提供的内容,我可以考虑两种选择:

使用IN代替

   select stuff 
     from table1 T1
left join table2 T2 on T1.field IN (T2.field1, T2.field2)
    where some condition

使用UNION

请注意,我使用了UNION ALL - 它比UNION快,但UNION会删除重复项,以便根据您的需要进行更改:

   select stuff 
     from table1 T1
left join table2 T2 on T1.field = T2.field1
    where some condition
UNION ALL
   select stuff 
     from table1 T1
left join table2 T2 on T1.field = T2.field2
    where some condition

答案 1 :(得分:2)

如果您遵循规则T2.field1 = T1.field true或T2.field2 = T1.field。 当输出取决于至少一个是真的。

**select stuff 
from table1 T1, table2 T2 
where some condition AND (T2.field1 = T1.field or T2.field2 = T1.field)**

答案 2 :(得分:0)

您可以使用T1.field IN (T2.field1, T2.field2),但我怀疑它会提高您的查询效果。