SQL CTE 记录


SELECT    ID , UserName , Vcode , Fromcode ,  0 AS [count]
INTO      #heihei
FROM      dbo.RegInfo;  

DECLARE @p_id INT;
DECLARE @p_UserName VARCHAR(20);
DECLARE @p_Vcode VARCHAR(20);
DECLARE @p_Fromcode VARCHAR(20);
DECLARE @count VARCHAR(20); 

DECLARE auth_cur CURSOR
FOR
  SELECT  *
  FROM    #heihei;
OPEN auth_cur;

FETCH NEXT FROM auth_cur INTO @p_id, @p_UserName, @p_Vcode, @p_Fromcode,@count;

WHILE ( @@fetch_status = 0 )
  BEGIN
      DECLARE @vvid INT = @p_Vcode;
      DECLARE @nowcount VARCHAR(20);  

      WITH    cteTree
                AS ( SELECT   ID , Vcode , Fromcode
                     FROM     #heihei
                     WHERE    Vcode = @vvid
                     UNION ALL
                     SELECT   b.ID , b.Vcode , b.Fromcode
                     FROM     cteTree INNER JOIN #heihei b ON cteTree.Vcode = b.Fromcode
                   )
          SELECT  @nowcount = COUNT(id)
          FROM    cteTree
          WHERE   Vcode != @vvid
        --OPTION (Maxrecursion 10) ;
      UPDATE  #heihei
      SET     [count] = @nowcount
      WHERE   ID = @p_id; 

      FETCH NEXT FROM auth_cur INTO @p_id, @p_UserName, @p_Vcode, @p_Fromcode,@count;
  END;
CLOSE auth_cur;
DEALLOCATE auth_cur;

SELECT    *
FROM      #heihei;
DROP TABLE #heihei;

查询注册邀请好友的数量

时间: 2024-10-29 04:22:43

SQL CTE 记录的相关文章

SQL Server 记录(更新中...)

sys.databases 显示所有数据库信息 sys.tables 显示当前数据库所有的表的信息 Go 向 SQL Server 实用工具发出一批 Transact-SQL 语句已结束的信号,Go本身不是T-SQL语句 sq_addrole 等等 SQL Server 系统存储过程以字符 sp_ 开头. EXEC或EXECUTE 执行 Transact-SQL 批处理中的命令字符串.字符串或执行下列模块之一:系统存储过程.用户定义存储过程.CLR 存储过程.标量值用户定义函数或扩展存储过程.

SQL CTE 递归 查询省,市,区

IF OBJECT_ID('tb') IS NOT NULL DROP TABLE tb create table tb(id varchar(3) , pid varchar(3) , name varchar(10)) insert into tb values('001' , null , '广东省') insert into tb values('002' , '001' , '广州市') insert into tb values('003' , '001' , '深圳市') inse

Yii2如何添加sql日志记录的配置信息

在使用Yii2框架的时候,常常会出现没有sql日志记录的问题.在代码里一句一句的打印sql语句也不现实.所以就要用文件记录起来. 在 config/web.php 里面的 log配置中增加如下配置 [ 'class' => 'yii\log\FileTarget', 'levels' => ['error', 'warning','info'], 'logVars'=>[], //表示以yii\db\或者app\models\开头的分类都会写入这个文件 'categories'=>

常用sql 全记录(添加中)

-- 数据库SQL总结中........... --SQL分类: (CREATE,ALTER,DROP,DECLARE) ---DDL-数据定义语言(SELECT,DELETE,UPDATE,INSERT) ---DML-数据操纵语言(GRANT,REVOKE,COMMIT,ROLLBACK) --DCL-数据控制语言--设置内存选项--设置 min server memory 配置项EXEC sp_configure N'min server memory (MB)', 0 --设置 max

Sql — CTE公用表表达式和With用法总结

CTE(Common Table Expression) 公用表表达式,它是在单个语句的执行范围内定义的临时结果集,只在查询期间有效.它可以自引用,也可在同一查询中多次引用,实现了代码段的重复利用. CTE最大的好处是提升T-Sql代码的可读性,可以更加优雅简洁的方式实现递归等复杂的查询. CTE可用于: ⒈ 创建递归查询,这个应该是CTE最好用的地方 ⒉ 在同一语句中多次引用生成的表 3. 减少子查询和表变量,提高执行效率 CTE优点: 1. 使用 CTE 可以获得提高可读性和轻松维护复杂查询

常用SQL脚本记录一

20.SUM()和 列+ 统计结果时:如果列里有一行为null,SUM函数会忽略它:如果+,则结果集也为NULL了 19 SUBSTRING (expression,startIndex, endIndex) SELECT SUBSTRING ('Los Angeles',1, 3) 返回结果Los,默认索引从1开始 18 SQL分隔字符串函数返回一个table数据集 ,拆成结果集SELECT * FROM dbo.fn_split('A,B,CD,EFG,H',',')Table里"-&quo

SQL学习记录

1.表的某一列对于只接受特定的值来说,需要增加一个约束条件, gender CHAR(1) CHECK (gender IN ('M','F')) 对于大多说数据库服务器中检查约束来说能够如期的工作,但对于MySQL来说,虽然定义了检查约束,但并不强制,实际上MySQL提供了另一种名为enum的字符数据类型,它可以将检查约束和数据定义融合在一起:gender ENUM('M','F'); 2.ALERT TABLE person MODIFY person_id SMALLINT UNSIGNE

Mysql 将结果保存到文件 从文件里运行sql语句 记录操作过程(tee 命令的使用)

1.  有时候我们可能须要记录我们对mysql的操作过程,这时我们能够使用mysql的tee命令 1)第一种情况是在链接数据库的时候使用tee >mysql  -u root  -p  --tee=C:\log.txt       //注意这里路径不须要加上引號 这时我们对数据库的全部操作都会记录在log.txt上: 2) 第二中方式是在链接上数据库后使用 mysql >   tee  C:\log.txt        //这个命令后面的操作都会记录在log中 当你不想记录log时,你能够使

SQL 问题记录

今天在处理SQL的时候遇到几个问题: 1.如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中 select distinct id from 收费站 order by name   //  错误 改成: select distinct id , name from 收费站 order by name // 正常 或者,用group by 代替 注意用了distict 后面紧跟的字段似乎不能出现在order by 中 2.除非另外还指定了 TOP