sql with语句查询 递归查询
with语句查询可以将一个子查询作为一个结果,相当于一个i临时表多次使用
WITH t1 AS (SELECT 1 AS id,'bird' AS cname) ,
t2 AS (SELECT 1 AS id,'123' AS info)
SELECT t1.cname,t2.info FROM t1,t2 WHERE t1.id=t2.id;
t1和t2两个临时结果,后续查询可以使用。最后的查询也可以再连接其它的第三个表
WITH RECURSIVE递归查询
机构或部门或类型这种数型数据结构如果给定一个节点查询所有的子节点,包括子子节点。这个时候就用到递归查询。
with recursive temp
as
(
/**初始查询*/
select t.id, t.name, t.pid from organ t where t.id = '123'
union all
/**递归条件*/
select m.id, m.name,m.pid from organ m inner join temp n on ( m.pid = n.id)
)
select id,name from temp
with语法在常见数据库oracle,pg,mysql测试都可以使用,mysql 8.0以下不支持with语句。select version()检查当前数据库版本。oracle在递归查询不需要加recursive。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤