资讯详情

【sql】sql中with as 介绍与使用jsqlparser解析sql

📅 2026/11/3 9:13:10 | 华诺云谱 👁 阅读
【sql】sql中with as 介绍与使用jsqlparser解析sql
文章目录一. 定义二. 用法三. 解析一. 定义with A as (select * from class)也就是将重复用到的大批量 的SQL语句放到with as 中加一个别名在后面用到的时候就可以直接用。对于大批量的SQL数据起到优化的作用。with子句的返回结果存到用户的临时表空间中只做一次查询反复使用提高效率。二. 用法with子句只能被select查询块引用在同级select前有多个查询定义的时候第1个用with后面的不用with并且用逗号隔开。最后一个with 子句与下面的查询之间不能有逗号只通过右括号分割with 子句的查询必须用括号括起来。-- 针对一个别名-- –相当于建了个e临时表witheas(select*fromscott.emp ewheree.empno7499)select*frome;-- –针对多个别名相当于建了e、d临时表witheas(select*fromscott.emp),das(select*fromscott.dept)select*frome,dwheree.deptnod.deptno;三. 解析dependencygroupIdcom.github.jsqlparser/groupIdartifactIdjsqlparser/artifactIdversion4.9/version/dependency官网文档https://jsqlparser.github.io/JSqlParser/usage.html#parse-a-sql-statements//去除 with语法下的别名privatestaticSetStringremoveWithAlias(Stringsql,SetStringtables){if(sql.contains(with )){PlainSelectselectnull;try{select(PlainSelect)CCJSqlParserUtil.parse(sql);ListWithItemwithItemsListselect.getWithItemsList();ListStringwithAliaswithItemsList.stream().map(withItem-withItem.getAlias().getName()).collect(Collectors.toList());returntables.stream().filter(t-!withAlias.contains(t)).collect(Collectors.toSet());}catch(Exceptione){e.printStackTrace();}}returntables;}
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑