【oracle/语法】With语句的写法
Sample1:
with temp AS ( select * from emp where rownum<11) select * from temp
Result:
SQL> with temp AS ( 2 select * from emp where rownum<11) 3 select * from temp; ID NAME AGE SALARY CREATE_TIME ---------- ---------------------------------------- ---------- ---------- --------------------------------------------------------------------------- 561 NDRKPHCF 40 43533 07-9月 -21 06.32.42.000000 下午 562 VOMTMOBLCBVKIGVOZSN 33 23063 07-9月 -21 06.32.42.000000 下午 563 GKDDBKTFAUON 63 14078 07-9月 -21 06.32.42.000000 下午 564 MHCEIQMT 64 11360 07-9月 -21 06.32.42.000000 下午 565 IVKRXCHYROE 28 38106 07-9月 -21 06.32.42.000000 下午 566 GROURMS 25 33055 07-9月 -21 06.32.42.000000 下午 567 BEUEKLUL 63 23546 07-9月 -21 06.32.42.000000 下午 568 QIITGBC 41 45708 07-9月 -21 06.32.42.000000 下午 569 OTSCIZLDWMJZFV 32 28990 07-9月 -21 06.32.42.000000 下午 570 KQZFWBK 64 45629 07-9月 -21 06.32.42.000000 下午 已选择10行。
Sample2:
with cityOldestWomen as ( select id,name,gender,cityname,birthymd from ( select id,name,gender,cityname,to_char(birthday,'yyyy-MM-dd') as birthymd, rank() over (partition by cityname order by birthday) as seq from customer where gender='f') where seq=1 order by id) select * from cityOldestWomen
Result:
SQL> with cityOldestWomen as ( 2 select id,name,gender,cityname,birthymd from ( 3 select 4 id,name,gender,cityname,to_char(birthday,'yyyy-MM-dd') as birthymd, 5 rank() over (partition by cityname order by birthday) as seq 6 from customer 7 where gender='f') 8 where seq=1 9 order by id) 10 select * from cityOldestWomen; ID NAME G CITYNAME BIRTHYMD ---------- ---------------------------------------- - ---------------------------------------- ---------- 1 XGZLORILKOGWELLJI f 山海关 1970-01-02 2 JFMOXKKFDJPSNBNQS f 绥中 1970-01-03 3 WKMIILRQAKY f 北戴河 1970-01-04 23 MKSREQXPKJTWSK f 兴城 1970-01-24 30 ILXYETNXOKXSB f 津滨 1970-01-31 SQL>
END
2022年1月7日增补
多个with的写法是以逗号分隔,第一个有with,其后都没有。
例子SQL:
with t1 as (select * from emp7 where id=1), t2 as (select * from emp7 where id=2) select * from t1,t2
执行结果:
SQL> with t1 as (select * from emp7 where id=1), 2 t2 as (select * from emp7 where id=2) 3 select * from t1,t2 4 ; ID NAME ID NAME ---------- -------------------- ---------- -------------------- 1 Andy 2 Bill
END
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2019-10-05 [MyBatis]完整MyBatis CRUD工程
2019-10-05 [log4j]Error:The method getLogger(String) in the type Logger is not applicable for the arguments
2019-10-05 [java]将秒数转化为“天时分秒”的格式(转贴+修改)
2019-10-05 [Java]简单计算下一段Java代码段运行了多少秒
2019-10-05 【log4j】log4j.properties 文件示例
2019-10-05 [MyBatis]最简MyBatis工程
2019-10-05 [Java]给指定时间加上十秒