【发布时间】:2011-05-01 15:02:10
【问题描述】:
我需要限制基于 Col1 的 SELECT 语句的结果集具有一对多的潜在值。例如,我想返回 Col1 等于 1、2 和 3 的所有行。
到目前为止,我有两种不同的方法来限制结果集:
方法#1
Inner Join Table1 On (Table2.ColA=Table1.ColA) And (Col1=1 And Col1=2 And Col1=3)
方法 #2
Inner Join Table1 On Table2.ColA=Table1.ColA
Where (Col1=1 And Col1=2 And Col1=3)
是首选其中一种方法还是有更有效的替代方法?这些值是动态的,每次调用时都会传递给存储过程。
谢谢, 克里斯
【问题讨论】:
-
查询计划怎么说?我个人更喜欢(并且我认为其他人会同意)方法 #2,因为它的读取方式与您实际尝试完成的方式非常相似。
-
Col1 不能同时等于 1 2 和 3。 1 != 2 != 3。另外,两个表中最好不要有 Col1。
-
实际查询比较复杂,我只是通过保持示例简单来寻找基本原理。
标签: sql sql-server tsql join