当前位置: 代码迷 >> Sql Server >> 归拢Sql语句
  详细解决方案

归拢Sql语句

热度:88   发布时间:2016-04-24 10:03:49.0
合并Sql语句
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 也是一种选择
  相关解决方案