共计 1928 个字符,预计需要花费 5 分钟才能阅读完成。
本篇内容介绍了“sql 语句中 with as 的用法介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
WITH AS 短语,也叫做子查询部分,可以定义一个 SQL 片断,该 SQL 片断会被整个 SQL 语句用到。可以使 SQL 语句的可读性更高,也可以在 UNION ALL 的不同部分,作为提供数据的部分。
–针对一个别名
with tmp as (select * from tb_name)
–针对多个别名
with
tmp as (select * from tb_name),
tmp2 as (select * from tb_name2),
tmp3 as (select * from tb_name3),
…
–相当于建了个 e 临时表
with e as (select * from scott.emp e where e.empno=7499)
select * from e;
–相当于建了 e、d 临时表
with
e 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 as 用法
insert into table2
s1 as (select rownum c1 from dual connect by rownum = 10),
s2 as (select rownum c2 from dual connect by rownum = 10)
select a.c1, b.c2 from s1 a, s2 b where…;
select s1.sid, s2.sid from s1 ,s2 需要有关联条件,不然结果会是笛卡尔积。
with as 相当于虚拟视图。
with as 短语,也叫做子查询部分 (subquery factoring),可以让你做很多事情,定义一个 sql 片断,该 sql 片断会被整个 sql 语句所用到。有的时候,是为了让 sql 语句的可读性更高些,也有可能是在 union all 的不同部分,作为提供数据的部分。
特别对于 union all 比较有用。因为 union all 的每个部分可能相同,但是如果每个部分都去执行一遍的话,则成本太高,所以可以使用 with as 短语,则只要执行一遍即可。如果 with as 短语所定义的表名被调用两次以上,则优化器会自动将 with as 短语所获取的数据放入一个 temp 表里,如果只是被调用一次,则不会。而提示 materialize 则是强制将 with as 短语里的数据放入一个全局临时表里。很多查询通过这种方法都可以提高速度。
with
sql1 as (select to_char(a) s_name from test_tempa),
sql2 as (select to_char(b) s_name from test_tempb where not exists (select s_name from sql1 where rownum=1))
select * from sql1
union all
select * from sql2
union all
select ‘no records’ from dual
where not exists (select s_name from sql1 where rownum=1)
and not exists (select s_name from sql2 where rownum=1);
WITH 语句的优点:
(1). SQL 可读性增强。比如对于特定 with 子查询取个有意义的名字等。
(2)、with 子查询只执行一次,将结果存储在用户临时表空间中,可以引用多次,增强性能。
举例: 在进行导入 EXCEL 的过程中,有时候,需要将数据存储在临时表中,当下一次在进行导入的时候,进行清除临时表的数据,但是这时候,有时候发生并发问题的话,两个用户可能会分别操作对方的数据,所以,可能造成混乱,但是可以使用 WITH 函数和 UNION 语句拼接一个 SQL 语句,存储在 SESSION 中,当需要导出错误信息的时候,可以使用该语句构造数据。
“sql 语句中 with as 的用法介绍”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!