我有一个具有以下架构的表:
| ID | BUNDLE_ID | IS_ADMIN |
我需要根据某些标准从上表中选择具有 AND 子句的数据,即
IF @FLAG = 1
SELECT *
FROM TABLE A
WHERE A.IS_ADMIN = 1 AND BUNDLE_ID IN (3, 5)
ELSE
SELECT *
FROM TABLE A
WHERE A.IS_ADMIN = 1 AND BUNDLE_ID IN (1, 2)
我可以通过单个查询实现此目的吗?
最佳答案
一般方法是使用 bool 表达式重写查询,该表达式根据标志的值计算出您需要的内容:
SELECT * FROM TABLE A WHERE A.IS_ADMIN = 1 AND ( -- Common part ...
(@Flag=1 AND BUNDLE_ID IN(3,5)) -- IF ...
OR
(@Flag<>1 AND BUNDLE_ID IN(1,2)) -- ELSE ...
)
关于sql - 如何有条件地将 AND 条件添加到 SQL Server 中的 WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48399488/