用于在sql where子句中切换要比较的列的case语句

iDe*_*esi -1 sql sql-server case where

我有一个场景,我需要在where子句中使用的列根据变量的值更改.

例如,如果@ID与Table1中的TableID匹配,那么我将使用下面的代码

WHERE 
    Table1.TableID = CASE WHEN @ID= -1 THEN Table1.TableID ELSE @ID END
Run Code Online (Sandbox Code Playgroud)

但是,如果@ID匹配Table2的TableID,那么我需要使用

WHERE 
    Table2.TableID = CASE WHEN @ID= -1 THEN Table2.TableID ELSE @ID END
Run Code Online (Sandbox Code Playgroud)

我将如何做到这一点?OR子句在这种情况下是否有效?

编辑:尝试提供更多细节,使其更清晰.样本数据

表格1

TableID   
1
2
3
4
Run Code Online (Sandbox Code Playgroud)

表2

TableID
10
11
12
13      
Run Code Online (Sandbox Code Playgroud)

如果@ID = -1我想看到两个表中的所有行.

如果@ID = 1则仅显示表1中的第一行

如果@ID = 10,那么只显示表2中的最后一行......依此类推.

Zan*_*ane 6

难道你不能做这样的事情.

where (@ID = Table1.TableID OR @ID = Table2.TableID)
Run Code Online (Sandbox Code Playgroud)

如果你想看看@ID是否与这些tableID中的任何一个匹配,那么这似乎是一种更简单的方法.