SQL中 ROWCOUNT和@@ROWCOUNT区别
2016-02-19 00:00
459 查看
摘要: ROWCOUNT和 常量@@ROWCOUNT的使用
ROWCOUNT
作用:限定后面的sql在返回指定的行数之后便停止处理(查询 删除 更新都有效)
注意,set rowcount 的设置会在整个会话中有效。要取消set rowcount的限定,只要在后面设置 set rowcount 0 就可以了
同 top
从上面的示例来看,好像rowcount没有多大的用处,限制查询结果的数据,我们使用top就可以了,而且还不用担心如果忘记取消rowcount的设置而对后面的sql的影响
ROWCOUNT 与 TOP的区别
select TOP 后面不能加参数,只能使用一个具体的int类型的数字
select top 5
declare @n int
set @n=10
set rowcount @n
select * from 表A
@@ROWCOUNT
返回上次sql语句所影响的数据行数(查询 删除 更新)
select top 2 * from 表A
select @@Rowcount
那么,哪些地方我们会用到@@Rowcount呢?
一、可能我们见到@@Rowcount身影最多的地方是触发器中,好的触发器,一般都会在最前面加上if @@rowcount=0 return语句,比如:
create trigger ti_tablea on tablea after update
as
if @@rowcount=0 return
……
这样,如果tablea被修改的数据行数为0,那么触发器ti_tablea就会直接退出,而不用执行后面的代码了。
二、第二个可能用到的地方就是我们可以使用@@rowcount来作递归或循环。比如下面示例:
declare @n int
set @n=1
select * from client_goods where id=@n
while @@rowcount>0
begin
set @n=@n+1
select * from client_goods where id=@n
end
这个示例是先查询client_goods中是否有id=1的数据,如果有,再查询是否有id=2的数据,一直查下去,直到id没有连续为止。当然大家在看这个
示例的时候不要考虑这个示例的意义,它只是说明了@@rowcount可以作为循环条件来用。
ROWCOUNT
作用:限定后面的sql在返回指定的行数之后便停止处理(查询 删除 更新都有效)
set rowcount 10 select * from 表A 这样的查询只会返回表A中的前10条数据
注意,set rowcount 的设置会在整个会话中有效。要取消set rowcount的限定,只要在后面设置 set rowcount 0 就可以了
同 top
从上面的示例来看,好像rowcount没有多大的用处,限制查询结果的数据,我们使用top就可以了,而且还不用担心如果忘记取消rowcount的设置而对后面的sql的影响
ROWCOUNT 与 TOP的区别
select TOP 后面不能加参数,只能使用一个具体的int类型的数字
select top 5
declare @n int
set @n=10
set rowcount @n
select * from 表A
@@ROWCOUNT
返回上次sql语句所影响的数据行数(查询 删除 更新)
select top 2 * from 表A
select @@Rowcount
那么,哪些地方我们会用到@@Rowcount呢?
一、可能我们见到@@Rowcount身影最多的地方是触发器中,好的触发器,一般都会在最前面加上if @@rowcount=0 return语句,比如:
create trigger ti_tablea on tablea after update
as
if @@rowcount=0 return
……
这样,如果tablea被修改的数据行数为0,那么触发器ti_tablea就会直接退出,而不用执行后面的代码了。
二、第二个可能用到的地方就是我们可以使用@@rowcount来作递归或循环。比如下面示例:
declare @n int
set @n=1
select * from client_goods where id=@n
while @@rowcount>0
begin
set @n=@n+1
select * from client_goods where id=@n
end
这个示例是先查询client_goods中是否有id=1的数据,如果有,再查询是否有id=2的数据,一直查下去,直到id没有连续为止。当然大家在看这个
示例的时候不要考虑这个示例的意义,它只是说明了@@rowcount可以作为循环条件来用。
相关文章推荐
- mysql的datetime与timestamp的区别
- MongoDB的安装
- 说说自己学习Oracle的方法
- mysql5.7.9 windows安装教程
- grafana与zabbix结合使用监控mysql
- oracle之条件查询、模糊查询、运算符
- 浅谈 Sql Server 触发器
- sql中exists,not exists的用法
- nodejs 链接数据库的一些代码
- ELK+Redis日志分析平台测试性能记录
- 关于mysql如何添加InnoDB
- C++ 自制Redis 数据库(十一)哈希类与数据库类
- sql优化 in和exists效率讨论
- Redis服务器的启动过程分析
- SSH+Ext+mysql快速开发
- 使用Redis实现用户积分排行榜的教程
- 使用Redis实现用户积分排行榜的教程
- Redis教程(一):Redis简介
- Redis教程(二):String数据类型
- Redis教程(二):String数据类型