SQL中的with怎么用?

ghgfn

FineReport 学习2 发布于 2022-2-18 15:26
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
冥河Lv8初级互助
发布于2022-2-18 15:30(编辑于 2022-2-18 15:46)

引用:

 with

 e as (select * from scott.emp),

 d as (select * from scott.dept)

 select e.字段1,d.字段1 

from e,d 

where e.id=d.id

–相当于建个e临时表with e as (select * from scott.emp e where e.empno=7499)select * from e;

–相当于建e、d临时表withe as (select * from scott.emp),d as (select * from scott.dept)select * from e, d where e.deptno = d.deptno;

其实就是把一大堆重复用到的sql语句放在with as里面,取一个别名,后面的查询就可以用它,这样对于大批量的sql语句起到一个优化的作用,而且清楚明了。

优点:

WITH语句的优点:

(1). SQL可读性增强。比如对于特定with子查询取个有意义的名字等。

(2)、with子查询只执行一次,将结果存储在用户临时表空间中,可以引用多次,增强性能。

image.png

最佳回答
0
隐藏大佬Lv4见习互助
发布于2022-2-18 15:27

with 临时表名 as(查询语句)

select ... from 临时表名

最佳回答
0
snrtuemcLv8专家互助
发布于2022-2-18 15:30
最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-2-18 15:30

已demo数据库中的STSCORE 表为例

WITH A AS (

SELECT * FROM STSCORE

)

SELECT * FROM A

等效于

SELECT * FROM (SELECT * FROM STSCORE) A

最佳回答
0
CD20160914Lv8专家互助
发布于2022-2-18 15:31

一个的使用方法

with tmp as (

select * from 表a

)

select * from tmp

多个查询使用with

with tmp as (

select * from 表a

),

 tmp2 as (

select * from 表b

)

select * from tmp 

left join tmp2 on tmp.id=tmp2.id

  • 5关注人数
  • 552浏览人数
  • 最后回答于:2022-2-18 15:46
    请选择关闭问题的原因
    确定 取消
    返回顶部