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中的最后一行......依此类推.
难道你不能做这样的事情.
where (@ID = Table1.TableID OR @ID = Table2.TableID)
Run Code Online (Sandbox Code Playgroud)
如果你想看看@ID是否与这些tableID中的任何一个匹配,那么这似乎是一种更简单的方法.
归档时间: |
|
查看次数: |
142 次 |
最近记录: |