用案例语句切换sql where子句中要比较的列

爱德西

我有一种情况,我需要在where子句中使用的列根据变量的值而变化。

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

WHERE 
    Table1.TableID = CASE WHEN @ID= -1 THEN Table1.TableID ELSE @ID END

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

WHERE 
    Table2.TableID = CASE WHEN @ID= -1 THEN Table2.TableID ELSE @ID END

我将如何完成这项工作?OR子句在这种情况下会起作用吗?

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

表格1

TableID   
1
2
3
4

表2

TableID
10
11
12
13      

如果@ID = -1,我想查看两个表中的所有行。

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

如果@ID = 10,则仅显示表2中的最后一行...等等。

赞恩

你不能只是做这样的事情。

where (@ID = Table1.TableID OR @ID = Table2.TableID)

如果您要查看@ID是否与这些tableID中的任何一个匹配,则这似乎是一种更简单的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章