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')
sql 语句查所有父级的更多相关文章
- Mysql 根据id查所有父级或子级
mysql递归查询,mysql中从子类ID查询所有父类(做无限分类经常用到) 由于mysql 不支持类似 oracle with ...connect的 递归查询语法 之前一直以为类似的查询要么用存储 ...
- SQL语句查数据库中某一列是否有重复项
Select 列名,COUNT(列名)FROM 表名GROUP BY 列名HAVING COUNT( 列名 ) 〉1
- 怎么用SQL语句查数据库中某一列是否有重复项
SELECT 某一列, COUNT( 某一列 ) FROM 表 GROUP BY 某一列 HAVING COUNT( 某一列 ) 〉1 这样查询出来的结果, 就是 有重复, 而且 重复的数量.
- sql语句not in判断条件注意事项
sql语句not in判断条件注意事项 问题描述:mysql数据库,存在两个表org表和kdorg表,用于存储组织信息.现在我需要从org表找出组织,条件为该组织不在kdorg表里. sql语句:se ...
- [20190328]简单探究sql语句相关mutexes.txt
[20190328]简单探究sql语句相关mutexes.txt --//摘要:http://www.askmaclean.com/archives/understanding-oracle-mute ...
- 用sql语句查出和sql相关的性能计数器
一台服务器上,用性能监视器死活显示不出来一部分计数器,没办法,用sql语句查了 --所有和sql相关的计数器 select * from sys.dm_os_performance_counters ...
- 数据库、MySQL下载与安装、基本SQL语句
数据演变史 # 1.单独的文本文件 没有固定的存放位置 没有固定的数据格式 '''程序彼此无法兼容 没有统一的标准''' # 2.软件开发目录规范 按照文件功能的不同规定了相应的位置 '''文件查找变 ...
- [经典SQL语句]根据父级ID查找所有子级ID,并将所有ID用逗号隔开返回
树形表结构: id parentID isDel 1 0 0 2 1 0 3 1 1 4 2 0 5 2 0 一)根据父级ID查找所有子级ID,并将所有ID用逗号隔开返回 ID=,需要返回的结果(条件 ...
- SQL Server T—SQL 语句【查】
一 查询数据(关键字:select) (1)简单查询 select * from 表名 ——查全表 select 列名 from 表名 select ...
随机推荐
- 异常:fatal: unable to access 'https://git.oschina.net/pcmpcs/library.git/': Could not resolve host
git fork项目时出现的异常. 原因: 我以前用的是ssh地址做的远程通信地址,而这次是用的是https,因为很久没用,所以忘记了以前是用ssh的了.解决方案一:复制ssh协议的地址,然后再关联 ...
- Eclipse External Tool Configration Notepad++
Location: C:\Program Files\Notepad++\notepad++.exe Arguments: ${resource_loc}
- VS2008引入头文件包含目录和lib库目录
全局级别的引入 为VS所有项目设置包含目录和库目录,对所有项目都有效 如下图所示:工具-选项-项目和解决方案-VC++目录-包含文件:在此添加头文件目录即可 工具-选项-项目和解决方案-VC++目录- ...
- b,B,KB,MB,GB,TB,PB,EB,ZB,YB,BB,NB,DB的含义,之间的关系
1bit=1位2进制信息 1B (byte 字节)1KB(Kilobyte 千字节)=2(10)B=1024B=2(10)B: 1MB(Megabyte 兆字节)=2(10)KB=1024KB=2(2 ...
- js创建并下载文件
先上代码: function createAndDownloadFile(fileName, content) { var aTag = document.createElement('a'); va ...
- array_filter与array_map
php数组array_filter函数和array_slice函数:<?php /* array_filter()用回调函数过滤数组中的单元 array_filter(array,functio ...
- MySQL unknown variable 'default-character-set=utf8'的解决
Windows07 安装了MySQL-server-5.5,直接在命令行输入net start mysql ,启动mysql成功, 然后修改/MySQL Server 5.5/my.ini,增加了de ...
- pojo类自动生成序列化ID
自动生成序列化ID
- AngularJS 中的 factory、 service 和 provider区别,简单易懂
转自:http://blog.csdn.net/ywl570717586/article/details/51306176 初学 AngularJS 时, 肯定会对其提供 factory . serv ...
- 2017年前小纪(有关http的一些缓存理论知识)
position的top和bottom的区别:前者基准点定在top,后者基准点定在bottom. for-in 遍历属性的顺序不确定 手机端,line-height对光标大小非常有影响 有些css3属 ...