SQL语句查询父级ID

DECLARE @Table TABLE ( Id INT, Name NVARCHAR(100), Pid INT ,SortOrder int)
INSERT @Table
SELECT 1,N‘上海‘,NULL,1
UNION SELECT 2,N‘江苏‘,NULL,1
UNION SELECT 11,N‘黄埔区‘,1,2
UNION SELECT 12,N‘徐汇区‘,1,2
UNION SELECT 21,N‘苏州市‘,2,2
UNION SELECT 22,N‘昆山市‘,2,2
UNION SELECT 111,N‘南京东路‘,11,3
UNION SELECT 211,N‘南京西路‘,11,3

DECLARE @Id INT
SET @Id=211
;WITH cte AS (
        SELECT * FROM @Table WHERE id = @Id
        UNION ALL SELECT t.* FROM @Table t JOIN cte ON t.id = cte.pid
             )
SELECT STUFF((SELECT ‘,‘+CONVERT(VARCHAR(10),ID) FROM cte ORDER BY SortOrder FOR XML PATH(‘‘)),1,1,‘‘),STUFF((SELECT ‘,‘+name FROM cte ORDER by SortOrder FOR XML PATH(‘‘) ),1,1,‘‘)

时间: 2024-08-10 19:15:43

SQL语句查询父级ID的相关文章

sql语句查询同一表内多字段同时重复的记录 sql数据库重复记录删除

分享下用sql语句删除数据库中重复记录的方法.比如现在有一人员表 (表名:peosons) 若想将姓名.身份证号.住址这三个字段完全相同的记录查询出来select p1.* from persons p1,persons p2 where p1.id<>p2.id and p1.cardid = p2.cardid and p1.pname = p2.pname and p1.address = p2.address可以实现上述效果.几个删除重复记录的SQL语句 1.用rowid方法2.用gr

sql语句查询经纬度范围

指定一个经纬度,给定一个范围值(单位:千米),查出在经纬度周围这个范围内的数据. 经度:113.914619 纬度:22.50128 范围:2km longitude为数据表经度字段 latitude为数据表纬度字段 SQL在mysql下测试通过,其他数据库可能需要修改 SQL语句如下: select * from location where sqrt( ( ((113.914619-longitude)*PI()*12656*cos(((22.50128+latitude)/2)*PI()/

提高SQL语句查询效率

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num=0 3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放

mysql操作命令梳理(5)-执行sql语句查询即mysql状态说明

在日常mysql运维中,经常要查询当前mysql下正在执行的sql语句及其他在跑的mysql相关线程,这就用到mysql processlist这个命令了.mysql> show processlist;            //查询正在执行的sql语句mysql> show full processlist;       //查询正在执行的完整sql语句mysql> kill connection id           //停掉processlist查询出的某个线程,id是对应的

sql语句查询重复的数据

查找所有重复标题的记录:SELECT *FROM t_info aWHERE ((SELECT COUNT(*)FROM t_infoWHERE Title = a.Title) > 1)ORDER BY Title DESC一.查找重复记录1.查找全部重复记录Select * From 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1)2.过滤重复记录(只显示一条)Select * From HZT Whe

sql语句查询数据库表结构信息

开发中经常用到查询指定表及其字段的信息,以下是我整理的SQL语句查询方法,供自己平时使用也提供给大家参考! 1.适用MS SQL SERVER: 1 SELECT 2 表名 = case when a.colorder=1 then d.name else '' end, 3 表说明 = case when a.colorder=1 then isnull(f.value,'') else '' end, 4 字段序号 = a.colorder, 5 字段名 = a.name, 6 标识 = c

如何用SQL语句查询Excel数据?

如何用SQL语句查询Excel数据?Q:如何用SQL语句查询Excel数据? A:下列语句可在SQL SERVER中查询Excel工作表中的数据. 2007和2010版本: SELECT*FROMOpenDataSource( 'Microsoft.ACE.OLEDB.12.0', 'Data Source="c:\book1.xlsx";User ID=Admin;Password=;Extended properties=Excel 12.0')...[Sheet1$] 复制代码

sql语句查询后几行数据并倒着排列

$conn = mysql_connect("数据库地址","用户名","密码"); if(!$conn) { die("mysql conn failed"); } else{ mysql_query("SET NAMES 'utf8'"); mysql_select_db("数据表",$conn); if(!$conn) { die("database selected f

二级菜单通过一个ID查找父级ID

select `id`,`name`,`pid` AS `q_pid`,(select id From qiyu_gift_category where id = q_pid ) as root_id from qiyu_gift_category WHERE id = 1SELECT `id` FROM `qiyu_gift_category` WHERE id = (SELECT pid FROM qiyu_gift_category WHERE id = 1) LIMIT 1 二级菜单通过