zoukankan      html  css  js  c++  java
  • sql 语句查所有父级

    常见问题,给一个记录ID,查出它的所有父级,直到顶级

    使用SMSS,sql server,找到一个办法.

    思路是分两步,先循环找到所有父级的ID,再用IN查出所有父级

    列说明  ID=PK  ParentId = 上级ID  ParentId = 0 表示到顶级了

    SQL语句 :

    DECLARE @childrenId VARCHAR(32)     -- 要查找这个ID的所有父级
    DECLARE @1parentIds VARCHAR(max) -- 所有父级的ID列表,最终拼成IN的条件.效果如: '111','222','333'

    SET @1parentIds = ''''+@childrenId+''''      -- 也包含自己,一直到父级

    WHILE @childrenId!='0'         -- 如果父级ID不是0就继续查找
    BEGIN
      SELECT @childrenId = ParentId FROM [table] WHERE  Id=@childrenId -- 根据ID找到这个记录,将它的父ID赋值,这个父ID作为下一级的子ID查找
      SET @1parentIds= @1parentIds + ',' + '''' + @childrenId + ''''                    -- 拼接这个父ID
    END

    -- 由于拼接的字符串不能做IN的参数,所以想这个办法将整个SQL拼成再执行之.

    EXEC('SELECT * FROM [table] WHERE Id IN (' + @1parentIds + ')'+'ORDER by Id')

  • 相关阅读:
    git 创建项目
    【转载】Nginx-Lua模块的执行顺序
    【转】微信oauth授权过程
    vps
    【转载】centos安装字体
    【转载】TortoiseGit图标消失
    【转载】linux权限
    js 获取url 中的参数;
    手机下拉/上拉刷新(基于jq或者zepto)
    vscode快捷键
  • 原文地址:https://www.cnblogs.com/mirrortom/p/8931190.html
Copyright © 2011-2022 走看看