zoukankan      html  css  js  c++  java
  • SQL 不使用递归,而对地区等级进行扁历

    地区表结构

    ID   ParentID Name

    1   0  A1

    2   1  A1-1

    ......

    /* 临时表 */

    create table #T_DQ(
      ID integer null,
      ParentID integer null,
      Name varchar(50) null,
      Grade integer null,  /* 级别 */
      State varchar(10) null  /* 1:未处理;2:已处理 */
    )

    /* SQL 为查询地区,包括子地区 */

    Insert into #T_DQ (ID, ParentID, Name, Grade, State)
      select ID, ParentID, Name, 1, '1' from T_DQ where ParentID=@Area  /* 需要查询的地区 */

    /* 循环插入子地区 */
    Select @ID=Min(ID) from #T_DQ
    while @ID is not null
    begin
      Select @Grade=Grade from #T_DQ where ID=@ID
      Insert into #T_DQ (ID, ParentID, Name, Grade,State)
        select ID, ParentID, Name, @Grade+1, '1' from #T_DQ1 where ParentID=@ID
      Update #T_DQ set State='2' where ID=@ID
      Select @ID=Min(ID) from #T_DQ where State<>'2'
    end

    select * from #T_DQ

    希望能对大家有帮助!

  • 相关阅读:
    Redis(二)
    Redis
    Nginx
    Linux的环境配置
    深入mysql
    SpringBoot入门
    Thymeleaf入门
    Mybatis之resultMap
    Mybatis入门
    使用第三方实现微信登录
  • 原文地址:https://www.cnblogs.com/yanyyx/p/1368124.html
Copyright © 2011-2022 走看看