sql中简简单单明明白白得使用 with temp as (select x from table1)
原创地址:https://blog.csdn.net/QQ826688096/article/details/89379997
今天在看博客得时候,发现了一个我不曾使用过得sql语法,感到很奇怪,就多看了几下。
发现还是很有用处得。
于是从地铁里出来后收起手机,直奔公司,打开电脑,使用了一下。
我去,上来就报错。
with temp_xs as (select xydm from xj_xsxxb where xh like'%001510%'),temp_js as (select xydm from sz_jsxxb where zgh like'%001510%')
select t.* from dm_yxb t
where t.yxdm =temp_xs.xydm or t.yxdm =temp_js.xydm;
这么看上面得代码也没有什么问题啊。
我记得我看清楚人家语法了啊,差不多就是这么写的啊,难道是我的表里有什么东西?
于是流程式的检验一下:
1,检验基本语法;
2,去除无用字段;
3,将变量值改成常量值。
最后发现,都没有问题!!!
于是我再去好好看看人家的成功案例,经过逐字逐句的检查,发现了端倪。
一个不容易被发现的端倪:
with 子句获得的是一个【临时表,如果在查询中使用,必须采用select 字段名 from with得表名】】,
比如,下面这样得写法就是错误的:
With temp_count as(select count(*) as countt from table)
Select temp_count+1 from dual;
下面才是正确的:
With temp_count as(select count(*) countt from user_tables)
Select (countt+1) from temp_count;
于是,我终于找到原因了。修改后,可以执行了:
with temp_xs as (select xydm from xj_xsxxb where xh like'%001510%'),temp_js as (select xydm from sz_jsxxb where zgh like'%001510%')
select t.* from dm_yxb t
where t.yxdm in(select xydm from temp_xs union select xydm from temp_js);
不过,我做了个对比,这种写法和 left join得写法得执行效率是一样得。没有得到提升,也没有拖后。下面就是传统的left join得写法,执行效率和with得一样的。
select t.* from dm_yxb t
left join (select xydm from xj_xsxxb where xh like'%001510%') temp_xs on temp_xs.xydm=t.yxdm
left join (select xydm from sz_jsxxb where zgh like'%001510%') temp_js on temp_js.xydm=t.yxdm
where t.yxdm in(temp_xs.xydm) or t.yxdm in(temp_js.xydm);
语法讲解:
于是,我就去百度一下with temp as 得好处:
- SQL可读性增强。比如对于特定with子查询取个有意义的名字等。
- with子查询只执行一次,将结果存储在用户临时表空间中,可以引用多次,增强性能。
重要参考:https://blog.csdn.net/rosanu_blog/article/details/8288548
sql中简简单单明明白白得使用 with temp as (select x from table1)相关推荐
- 如何将不同情况下的List带到SQL中进行判断操作
简单来说就是将List传到SQL语句中进行查询操作 其实,这里将List传到SQL语句中进行查询,方法有很多,我这里只是记录我习惯用的一种方法,原因之初是因为我要判断的情况太多了,不方便全在SQL中进 ...
- SQL中使用WITH AS提高性能-使用公用表表达式(CTE)简化嵌套SQL
一.WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到.有的时候, ...
- Oralce 使用SQL中的exists 和not exists 用法详解
exists表示() 内子查询返回结果不为空,说明where条件成立就会执行sql语句:如果为空,表示where条件不成立,sql语句就不会执行. not exists和 exists相反,子查询语 ...
- oracle怎么变为整数,如何在Oracle 11g SQL中为char添加整数?(How to add integers to char in Oracle 11g SQL?)...
如何在Oracle 11g SQL中为char添加整数?(How to add integers to char in Oracle 11g SQL?) 是否可以在PL / SQL块中做这样的事情: ...
- sql动态sql给变量复值_在动态SQL中使用变量
sql动态sql给变量复值 Before we delve into these SQL concepts, note that I like to do all my development in ...
- sql中截取字符串函数_SQL Server 2017中的顶级SQL字符串函数
sql中截取字符串函数 SQL Server 2017 has been in the talk for its many features that simplify a developer's l ...
- SQL 中With as 的用法
一.WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到.有的时候,是为了让 ...
- (转)SQL中WITH的用法
本文内容来自http://www.cnblogs.com/fightLonely/archive/2011/02/24/1963907.html 一.WITH AS的含义 WITH AS短语,也叫做子 ...
- 在PL/SQL中使用随机数和GUID
在PL/SQL中使用随机数和GUID FROM http://hi.baidu.com/yuxichu/blog/item/cc7b08388a398af2b211c7c6.html 2 ...
- oracle求累积收益率,解决报表sql中的累计收益率问题?换个姿势,再来一次~
原标题:解决报表sql中的累计收益率问题?换个姿势,再来一次~ 最近在做券商资产分析业务的时候,碰到个报表需求,要求计算从20170301到20170831期间,大约40w客户(表数据量5000w)的 ...
最新文章
- 字符串的全排列和组合算法
- NHibernate.ADOException: cannot open connection
- js心跳间隔怎么确定_外墙瓷砖渗水怎么处理的?施工步骤和方法都在这啦
- AI:2020年6月21日北京智源大会演讲分享之20:05-20:25陶建华《人工智能学科设置与人才培养》、雷明《企业对人工智能人才的要求以及对人工智能人才培养的建议》
- 【git】之使用shell脚本提交代码
- flash air 解析html,AIR 程序内部显示网页,并可以点击浏览的方法(HTMLLoader、StageWebView)...
- 统计学习方法 学习笔记(五):支持向量机(下)
- NO.54 在禅道里建立部门结构、添加用户
- 批次程序安裝手冊寫法
- Go内存分配跟踪调优
- boost之lexical_cast使用
- 【问题解决】Selenium——NoSuchWindowException: Browsing context has been discarded
- vmd安装包_【MMD相关】推荐点软件/插件
- ubuntu修改u盘权限_Ubuntu下U盘只读文件系统,图标上锁,提示无法修改
- 正则表达式验证手机号码是否正确
- HTML5实现中国象棋游戏
- 《勒索软件防护发展报告(2022年)》正式发布,助力企业高效应对勒索软件攻击
- Java实现Linux的md5加密,Linux_详细讲解:Linux系统GRUB的MD5加密方法,1、用grub-md5-crypt成生GRUB的md5密 - phpStudy...
- 如何给TSM磁带机添加新磁带
- 乔·克拉克(Joe Clark)关于版权的胡思乱想
热门文章
- ugp和千幻魔镜买哪个好_2020年买VR盒子十大品牌推荐 VR手机盒子如何使用
- IMAP常用命令汇总
- 于的繁体字有几种写法_在繁体字中,“于”、“於”这两个字如何正确使用?...
- 2020年408真题_2020年港澳台联考真题——数学!
- haproxy配置timeout
- 中移动入侵防御设备集采,总限价1.6亿;爱立信斩获95个5G商用合同
- 人工智能之模式识别(二)
- 软件插件安装激活教程以及密钥
- android手机获取qq闪照的方法,QQ闪照怎么保存 闪照保存到手机的方法教程
- ResourceManager HA 配置