树形结构有关的SQL
1. SQL 递归查询(根据指定的节点 --> 向上 获取所有父节点)
WITH TEMP AS ( SELECT * FROM chpTur WHERE ID = '5' --表的ID UNION ALL SELECT T0.* FROM TEMP,chpTur T0 WHERE TEMP.ID=T0.prID --子级ID==父级ID ) SELECT * FROM TEMP;
2. SQL 递归查询(根据指定的节点 向下 --> 获取所有子节点)
WITH TEMP AS ( SELECT * FROM chpTur WHERE ID = '800' --表的ID UNION ALL SELECT T0.* FROM TEMP,chpTur T0 WHERE TEMP.prID=T0.ID --父级ID==子级ID ) SELECT * FROM TEMP;
3. 路径的遍历
WITH T AS ( SELECT *, convert(varchar(200), PLMing0) as PLLJing FROM chpTur WHERE prID = 0 UNION ALL SELECT a.*, convert(varchar(200), b.PLLJing + '→' + a.PLMing0) FROM chpTur a join T b on a.prID = b.ID ) SELECT * FROM T
4. 首节点 (一级节点)
SELECT * FROM chpTur A WHERE NOT EXISTS (SELECT * FROM chpTur B WHERE a.prID=b.ID)
5. 最后节点 (N 级节点)
SELECT * FROM chpTur A WHERE NOT EXISTS (SELECT * FROM chpTur B WHERE a.ID=b.prID)
6. 分类路径分割 (路径符 替换 Tab)
SELECT tTur.* , vPath.PLLJing , REPLACE(vPath.PLLJing , '→', CHAR(9) ) AS PLLJing_B FROM chpTur AS tTur LEFT JOIN vPLLJing AS vPath ON tTur.ID = vPath.ID ORDER BY prID, PLMing0
7. 涉及到所选分类的 分类ID 集合
WITH TEMP AS ( SELECT ID, prID FROM chpTur WHERE ID = 2 UNION ALL SELECT T0.ID, T0.prID FROM TEMP,chpTur T0 WHERE TEMP.ID=T0.prID AND sdRecFlg = 'N' ) SELECT DISTINCT ID FROM TEMP
8. chpTur Fix prID --- By prLinkID
UPDATE A SET A.prID = B.ID FROM chpTur as A, chpTur B WHERE A.prLinkID = B.LinkID AND A.prLinkID <> ''
chpInf Fix turID By turLinkID
update chpInf set chpInf.turID = chpTur.ID from chpInfo as chpInf, chpTur as chpTur where chpInf.turLinkID = chpTur.LinkID
9. 校验无上一级的类别
select * from chpTur where ID > 1 AND prID not in (select ID from chpTur)
sql自关联查询上级id对应的名字
方法一:关联查询
select ci1.id,(select ci2.name from city_info ci2 where ci2.id = ci1.pId) as pName,ci1.name,ci1.title,ci1.type from city_info ci1;
方法二:左外连接查询
select ci1.id,ci2.name pName,ci1.name,ci1.title,ci1.type from city_info ci1 LEFT JOIN city_info ci2 ON ci1.pId = ci2.id;
查询结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2018-02-06 sql 查出一张表中重复的所有记录数据
2018-02-06 如何用sql语句复制一张表