如何获取最末级的数据

小野马1209 2018-01-08 02:23:17
--如何查最末级的代码
DECLARE @t table (ID varchar(20),Leval int,ParentId varchar(20))
INSERT INTO @t
SELECT 'A',1,'' UNION ALL
SELECT 'A01',2,'A' UNION ALL
SELECT 'A01',3,'A01' UNION ALL
SELECT 'B01',2,'A'

SELECT * FROM @t
/*
想要的结果
A01 3 A01
B01 2 A
*/
...全文
582 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 2018-01-08
  • 打赏
  • 举报
回复
不是父节点就应该是最末级
DECLARE @t table (ID varchar(20),Leval int,ParentId varchar(20))
INSERT INTO @t
SELECT 'A',1,'' UNION ALL
SELECT 'A01',2,'A' UNION ALL
SELECT 'A0101',3,'A01' UNION ALL
SELECT 'B01',2,'A'

SELECT *
FROM @t
WHERE ID NOT IN ( SELECT ParentId
FROM @t )


听雨停了 2018-01-08
  • 打赏
  • 举报
回复
引用 1 楼 kaijie_wu1209 的回复:

DECLARE @t table (ID varchar(20),Leval int,ParentId varchar(20))
INSERT INTO @t
SELECT 'A',1,'' UNION ALL
SELECT 'A01',2,'A' UNION ALL
SELECT 'A0101',3,'A01' UNION ALL
SELECT 'B01',2,'A' 

SELECT a.* FROM @t a
left JOIN @t b ON a.id=b.ParentId
WHERE isnull(b.id,'')='' 

/*
ID                   Leval       ParentId
-------------------- ----------- --------------------
A0101                3           A01
B01                  2           A
*/
小野马1209 2018-01-08
  • 打赏
  • 举报
回复
案例更新了下
DECLARE @t table (ID varchar(20),Leval int,ParentId varchar(20))
INSERT INTO @t
SELECT 'A',1,'' UNION ALL
SELECT 'A01',2,'A' UNION ALL
SELECT 'A0101',3,'A01' UNION ALL
SELECT 'B01',2,'A' 

SELECT * FROM @t
/*
想要的结果
A0101	3	A01
B01	2	A
*/

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧