SQL - WHERE(X,Y)IN(A,B)

Mic*_*elZ 1 sql sql-server

我目前有一些堵塞.

我的理论查询看起来像这样:

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 +)

Mic*_*ito 5

为什么不像以下那样简单?

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)

不要忘记根据需要向新表添加索引/外键.

如果由于某种原因您不希望提前创建表,则可以使用临时表或表变量并在过程中填充它.