SQL中if语句是最常见也是最常用的SQL语句之一,下面就将为您举例说明SQL中if语句的用法,希望对您学习SQL中if语句的使用能够有些许帮助。
【编辑推荐】
巧用SQL server临时表
速学如何定义SQL存储过程
sql server表改为dbo的方法
教您sql server表结构的修改方法
上亿的sql server表进行join的问题
三条SQL语句 拼接在一起 显示出来

用Union ALL :select , , 人数=COUNT(*) from T_Student tsd,T_School tsl where = group by , -- (学校人数统计)Union ALL select , , 人数=COUNT(*) from T_Student tsd,T_Position tst where = group by , --(城市人数统计) Union ALLselect , , 学校个数=COUNT(*) from T_School sch,T_Position pon where = grou
SQL随机查询一条记录并对其中一个字段修改值然后输出查询到的这条数据
--你是要随机在yyy_ml这个表中取状态=1的一条记录并更新该记录的状态为2么?(sql2005或以上版本)With TAs(Select Top 1 * From yyy_ml Where 状态=1 Order by newid())Update T Set 状态=2Output ,inserted.题目
用SQL语句怎么实现数据库分页?
CREATE PROC sp_PageView@tbname sysname, --要分页显示的表名@FieldKey nvarchar(1000),--用于定位记录的主键(惟一键)字段,可以是逗号分隔的多个字段@PageCurrent int=1,--要显示的页码@PageSize int=10,--每页的大小(记录数)@FieldShownvarchar(1000)=, --以逗号分隔的要显示的字段列表,如果不指定,则显示所有字段@FieldOrdernvarchar(1000)=,--以逗号分隔的排序字段列表,可以指定在字段后面指定DESC/ASC用于指定排序顺序@Where nvarchar(1000)=,--查询条件@PageCountint OUTPUT --总页数ASSET NOCOUNT ON--检查对象是否有效IF OBJECT_ID(@tbname) IS NULLBEGINRAISERROR(N对象%s不存在,1,16,@tbname)RETURNENDIF OBJECTPROPERTY(OBJECT_ID(@tbname),NIsTable)=0AND OBJECTPROPERTY(OBJECT_ID(@tbname),NIsView)=0AND OBJECTPROPERTY(OBJECT_ID(@tbname),NIsTableFunction)=0BEGINRAISERROR(N%s不是表、视图或者表值函数,1,16,@tbname)RETURNEND--分页字段检查IF ISNULL(@FieldKey,N)=BEGINRAISERROR(N分页处理需要主键(或者惟一键),1,16)RETURNEND--其他参数检查及规范IF ISNULL(@PageCurrent,0)<1 SET @PageCurrent=1IF ISNULL(@PageSize,0)<1 SET @PageSize=10IF ISNULL(@FieldShow,N)=N SET @FieldShow=N*IF ISNULL(@FieldOrder,N)=NSET @FieldOrder=NELSESET @FieldOrder=NORDER BY +LTRIM(@FieldOrder)IF ISNULL(@Where,N)=NSET @Where=NELSESET @Where=NWHERE (+@Where+N)--如果@PageCount为NULL值,则计算总页数(这样设计可以只在第一次计算总页数,以后调用时,把总页数传回给存储过程,避免再次计算总页数,对于不想计算总页数的处理而言,可以给@PageCount赋值)IF @PageCount IS NULLBEGINDECLARE @sql nvarchar(4000)SET @sql=NSELECT @PageCount=COUNT(*)+N FROM +@tbname+N +@WhereEXEC sp_executesql @sql,N@PageCount int OUTPUT,@PageCount OUTPUTSET @PageCount=(@PageCount+@PageSize-1)/@PageSizeEND--计算分页显示的TOPN值DECLARE @TopN varchar(20),@TopN1 varchar(20)SELECT @TopN=@PageSize,@TopN1=@PageCurrent*@PageSize--第一页直接显示IF @PageCurrent=1EXEC(NSELECT TOP +@TopN+N +@FieldShow+N FROM +@tbname+N +@Where+N +@FieldOrder)ELSEBEGIN--生成主键(惟一键)处理条件DECLARE @Where1 nvarchar(4000),@s nvarchar(1000)SELECT @Where1=N,@s=@FieldKeyWHILE CHARINDEX(N,,@s)>0SELECT @s=STUFF(@s,1,CHARINDEX(N,,@s),N),@Where1=@Where1+N AND a.+LEFT(@s,CHARINDEX(N,,@s)-1)+N=+LEFT(@s,CHARINDEX(N,,@s)-1)SELECT @Where1=STUFF(@Where1+N AND a.+@s+N=+@s,1,5,N),@TopN=@TopN1-@PageSize--执行查询EXEC(NSET ROWCOUNT +@TopN1+N SELECT +@FieldKey+N INTO # FROM +@tbname+N +@Where+N +@FieldOrder+N SET ROWCOUNT +@TopN+N DELETE FROM #+N SELECT +@FieldShow+N FROM +@tbname+N a WHERE EXISTS(SELECT * FROM # WHERE +@Where1+N) +@FieldOrder)END
发表评论