【发布时间】:2019-05-15 17:52:11
【问题描述】:
我正在尝试执行以下操作(伪代码,因为它无法编译):
declare showListedOrSold int = 1 -- get value from config table
select *
from table
where CASE WHEN @showListedOrSold = 0 THEN id IN (1, 2, 5, 6, 10, 11)
WHEN @showListedOrSold = 1 THEN id IN (1, 5, 6, 10, 11)
WHEN @showListedOrSold = 2 THEN id IN (2)
END
基本上取决于showListedOrSold 的值,它应该带回某些id 值。
该语句不喜欢 IN 子句。这个用例的正确语法是什么?
【问题讨论】:
-
远离 CASE 解决方案,因为它们不是 SARGable 并且会产生性能问题。
标签: sql sql-server sql-server-2016