我目前有一些堵塞.
我的理论查询看起来像这样:
SELECT * FROM Table WHERE X in (a, b, c) AND Y IN (d, e, f)
Run Code Online (Sandbox Code Playgroud)
所以基本上,我希望所有行都有多列匹配,这意味着:
X, Y
1, 2
3, 4
5, 6
7, 8,
9, 10
Run Code Online (Sandbox Code Playgroud)
如果我想将所有行放在哪里(X=1, Y=2)
或者(X=5, Y=6)
,那么X和Y是相关的,我该怎么做?
(MS SQL2005 +)
为什么不像以下那样简单?
WHERE (X = 1 AND Y = 2) OR (X = 5 AND Y = 6) ...
或者,如果您正在寻找Y(应该是X + 1)的行(基于您的示例),那么:
WHERE Y = X + 1
如果您有OR
上述数以千计的条款,那么我建议您提前填充一个条件表,并将您的查询重写为连接.假设您有这样一个表,Criteria(X, Y)
那么您的查询变得更加简单:
SELECT Table.*
FROM Table
INNER JOIN Criteria ON Table.X = Criteria.X AND Table.Y = Criteria.Y
Run Code Online (Sandbox Code Playgroud)
不要忘记根据需要向新表添加索引/外键.
如果由于某种原因您不希望提前创建表,则可以使用临时表或表变量并在过程中填充它.