我的问题是我有这样的查询:
SELECT * FROM TABLE1 WHERE STATUSID = @PARAMETER
然后我想将这个查询创建为动态的查询:
IF @PARAMETER IS 1 THEN STATUSID = 1
IF @PARAMETER IS 2 THEN STATUSID = 2
IF @PARAMETER IS 3 THEN STATUSID = 1 OR STATUSID = 2
任何人都可以给我一个示例查询如何做到这一点?我只想在WHERE
子句中执行此操作,以便最小化我的代码行。
答案 0 :(得分:3)
使用OR
SELECT *
FROM TABLE1
WHERE (STATUSID = 1 and @PARAMETER = 1)
OR (STATUSID = 2 and @PARAMETER = 2)
or (STATUSID in (1,2) and @PARAMETER = 3)
答案 1 :(得分:3)
Use CASE Clause to get result :
SELECT * FROM TABLE1 WHERE STATUSID = CASE
WHEN @PARAMETER = 1 THEN 1
WHEN @PARAMETER = 2 THEN 2
WHEN @PARAMETER = 3 THEN STATUSID END
答案 2 :(得分:2)
另一种解决方案是首先检查参数,然后执行相应的查询。
IF @PARAMETER = 1 THEN SELECT * FROM TABLE1 WHERE STATUSID = 1
IF @PARAMETER = 2 THEN SELECT * FROM TABLE1 WHERE STATUSID = 2
IF @PARAMETER = 3 THEN SELECT * FROM TABLE1 WHERE STATUSID = 1 OR STATUSID = 2
引擎优化是否最简单。