ALTER Proc [dbo].[p_GetServerDataCursor]
AS
BEGIN
IF EXISTS ( SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[#ttableName]') AND type IN ( N'U' ) )
BEGIN
DROP TABLE [dbo].[#ttableName]
END
IF EXISTS ( SELECT *
FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[#tmpReturnData]')
AND type IN ( N'U' ) )
BEGIN
DROP TABLE [dbo].[#tmpReturnData]
END
declare @orderNum varchar(255)
--创建临时表存储tagId
create table #ttableName(id int identity(1,1),Orders varchar(255))
--创建临时表返回数据
create table #tmpReturnData(id int identity(1,1),openid varchar(100),tagid varchar(100))
--定义循环变量,行数,总数
declare @n int,@rows int,@count varchar(1000),@a varchar(100)
--查询去重复tagId插入ttableName中
insert #ttableName(orders) select distinct tagId from Log_TagIdRecord where openId !='null' and IsServer=0
--row获取tagid行数 rowcount 返回受上一语句影响的行数。如果行数大于20 亿,请使用ROWCOUNT_BIG。
select @rows =@@rowcount
set @n=1
while @n<=@rows
begin
--@count查询数量根据,ttableName表ID自增长根据@n循环每行数据
select @count=COUNT( distinct openId) from Log_TagIdRecord where tagId=(select Orders from #ttableName where id=@n) and openId !='null'and IsServer=0;
select @a=Orders from #ttableName where id=@n;
IF(@count>49)
BEGIN
insert #tmpReturnData select distinct top 50 openId,tagId from Log_TagIdRecord where tagId=(select Orders from #ttableName where id=@n) and openId !='null'and IsServer=0;
update Log_TagIdRecord set IsServer=1 where openId in (select openid from #tmpReturnData) and tagId in (select tagid from #tmpReturnData)
break;
END
--@n增加
select @n=@n+1
end
set @a='select * from #tmpReturnData'
EXEC (@a)
drop table #ttableName
drop table #tmpReturnData
END

SQL while循环的更多相关文章

  1. Oracle PL/SQL中的循环处理(sql for循环)

    今天来说下Oracle中的循环迭代处理,因为从自己的博客统计中看到,不少网友都搜索了关键字"SQL FOR循环",所以打算在这里说下个人的理解. PL/SQL也和我们常用的编程语言 ...

  2. sql 游标循环当中重新赋值

    sql 游标循环当中的变量必须重新赋值不然变量的值就是前次循环的值

  3. SQL中循环和条件语句

    .if语句使用示例: declare @a int begin print @a end else begin print 'no' end .while语句使用示例: declare @i int ...

  4. SQL脚本循环修改数据库字段类型

    数据库在设计的时候也许考虑不全面,导致某些字段类型不太准确.比如设计的时候是varchar(1024),但是实际使用的时候却发现太小了,装不下,于是需要修改字段类型为ntext什么的. 我最近就遇到了 ...

  5. SQL WHILE 循环中的游标 用例,SQL中实现循环操作

    --声明两个应用变量 declare @USERID_ int declare @ORGANISEUNITID_ int --声明一个变量计数用,开发中可以忽略 declare @i int=0 -- ...

  6. SQL条件循环语句以及异常知识整理

    create or replace procedure pr_test1 is begin > then dbms_output.put_line('条件成立'); elsif > the ...

  7. java for循环里面执行sql语句操作,有效结果只有一次,只执行了一次sql mybatis 循环执行update生效一次 实际只执行一次

    java后台controller中,for循环执行数据库操作,但是发现实际仅仅执行了一次,或者说提交成功了一次,并没有实际的个数循环 有可能是同一个对象导致的 可以仔细看一下下面两段代码有什么区别 p ...

  8. sql语句循环截取字符串

    测试环境 : mssql2016 express 需求 : 拆分字符串执行insert 思路 : 在循环中截取分隔符之间的字符串.起止点位置计算    起点从0开始startIndex,查找第一个分隔 ...

  9. SQL Server循环

    1.普通循环 DECLARE @i int BEGIN WHERE Uid=@i --PRINT @i END 2.游标循环(没有事务) ---游标循环(没有事务) BEGIN DECLARE @a ...

  10. Oracle中PL/SQL的循环语句

    在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...

随机推荐

  1. [uboot] (第三章)uboot流程——uboot-spl代码流程

    http://blog.csdn.net/ooonebook/article/details/52957395 以下例子都以project X项目tiny210(s5pv210平台,armv7架构)为 ...

  2. QT中报错collect2:ld returned 1 exit status的可能原因。

    参考:https://blog.csdn.net/u014546553/article/details/78781547 1.编译成功的例子在后台执行,有时一闪而过,如果再次build ,则会提示上述 ...

  3. python模块:time

    # encoding: utf-8 # module time # from (built-in) # by generator 1.145 """ This modul ...

  4. VB.NET 定义多行文本字符的几种方式

    vbCrLf 在 .NET 刚刚推出的时候,VB作为一款被微软用来"衬托"C#的语言,在许多细节设计上远不如C#方便. 比如在C#中写一个多行文本,就有各种方式: string s ...

  5. [转]语音识别中区分性训练(Discriminative Training)和最大似然估计(ML)的区别

    转:http://blog.sina.com.cn/s/blog_66f725ba0101bw8i.html 关于语音识别的声学模型训练方法已经是比较成熟的方法,一般企业或者研究机构会采用HTK工具包 ...

  6. OSLab多线程

      日期:2019/3/26 内容:多线程. 一.基本知识 线程的定义 线程(thread)是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单 ...

  7. Android 富文本编辑器实现方案

    本人实现富文本编辑器的时候,总结了如下两种方案: 1. 纯 EditText 实现方案 2. 使用ScrollView作为最外层的父容器来控制展示效果 示例demo地址为:https://github ...

  8. go操作redis

    package main import ( "fmt" "github.com/gomodule/redigo/redis" ) func main() { c ...

  9. [转]SQL SERVER整理索引碎片测试

    SQL SERVER整理索引碎片测试 SQL SERVER整理索引的方法也就这么几种,而且老是自作聪明的加入智能判断很不爽,还是比DBMS_ADVISOR差远了: 1SQL SERVER 2000/2 ...

  10. LeetCode:114_Flatten Binary Tree to Linked List | 将一棵二叉树变成链表的形式 | Medium

    要求:Given a binary tree, flatten it to a linked list in-place.将二叉树转化为平坦序列的树.比如: 结题思路: 该题有个提示,转化后的树的序列 ...