DECLARE @flag INT
SET @flag=1
if(@flag=1)
SELECT COUNT(*) FROM AdminSys WHERE AdminID>2
else
SELECT COUNT(*) FROM AdminSys WHERE AdminID>2 and typeid in (select id from table)
上面的sql 语句,如果写成一句sql ,请帮忙
------解决方案--------------------
SELECT COUNT(*) FROM AdminSys WHERE AdminID>2 or (@flag!=1 and typeid in (select id from table))
试一下上面这句sql。
------解决方案--------------------
declare @flag int
set @flag=1
select count(*) from AdminSys where 1=case when @flag=1 then case when AdminID>2 then 1 else 0 end
else case when AdminID>2 and typeID in(select id from [table]) then 1 else 0 end
end
------解决方案--------------------
原写法if..else..没问题的.不建议合并,
这样条理性好便于阅读,一定要合并为一句的话,可能会影响SQL执行计划的选择.
PS: SQL语句不一定是越简短性能越好的,不能单纯从语句的长度来衡量.
------解决方案--------------------
如果条件多,动态sql 也是一种选择