原创地址: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 得好处:

  1. SQL可读性增强。比如对于特定with子查询取个有意义的名字等。
  2. with子查询只执行一次,将结果存储在用户临时表空间中,可以引用多次,增强性能。

重要参考:https://blog.csdn.net/rosanu_blog/article/details/8288548

sql中简简单单明明白白得使用 with temp as (select x from table1)相关推荐

  1. 如何将不同情况下的List带到SQL中进行判断操作

    简单来说就是将List传到SQL语句中进行查询操作 其实,这里将List传到SQL语句中进行查询,方法有很多,我这里只是记录我习惯用的一种方法,原因之初是因为我要判断的情况太多了,不方便全在SQL中进 ...

  2. SQL中使用WITH AS提高性能-使用公用表表达式(CTE)简化嵌套SQL

    一.WITH AS的含义     WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到.有的时候, ...

  3. Oralce 使用SQL中的exists 和not exists 用法详解

    exists表示() 内子查询返回结果不为空,说明where条件成立就会执行sql语句:如果为空,表示where条件不成立,sql语句就不会执行. not exists和  exists相反,子查询语 ...

  4. 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块中做这样的事情: ...

  5. sql动态sql给变量复值_在动态SQL中使用变量

    sql动态sql给变量复值 Before we delve into these SQL concepts, note that I like to do all my development in ...

  6. sql中截取字符串函数_SQL Server 2017中的顶级SQL字符串函数

    sql中截取字符串函数 SQL Server 2017 has been in the talk for its many features that simplify a developer's l ...

  7. SQL 中With as 的用法

    一.WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到.有的时候,是为了让 ...

  8. (转)SQL中WITH的用法

    本文内容来自http://www.cnblogs.com/fightLonely/archive/2011/02/24/1963907.html 一.WITH AS的含义 WITH AS短语,也叫做子 ...

  9. 在PL/SQL中使用随机数和GUID

          在PL/SQL中使用随机数和GUID FROM  http://hi.baidu.com/yuxichu/blog/item/cc7b08388a398af2b211c7c6.html 2 ...

  10. oracle求累积收益率,解决报表sql中的累计收益率问题?换个姿势,再来一次~

    原标题:解决报表sql中的累计收益率问题?换个姿势,再来一次~ 最近在做券商资产分析业务的时候,碰到个报表需求,要求计算从20170301到20170831期间,大约40w客户(表数据量5000w)的 ...

最新文章

  1. 字符串的全排列和组合算法
  2. NHibernate.ADOException: cannot open connection
  3. js心跳间隔怎么确定_外墙瓷砖渗水怎么处理的?施工步骤和方法都在这啦
  4. AI:2020年6月21日北京智源大会演讲分享之20:05-20:25陶建华《人工智能学科设置与人才培养》、雷明《企业对人工智能人才的要求以及对人工智能人才培养的建议》
  5. 【git】之使用shell脚本提交代码
  6. flash air 解析html,AIR 程序内部显示网页,并可以点击浏览的方法(HTMLLoader、StageWebView)...
  7. 统计学习方法 学习笔记(五):支持向量机(下)
  8. NO.54 在禅道里建立部门结构、添加用户
  9. 批次程序安裝手冊寫法
  10. Go内存分配跟踪调优
  11. boost之lexical_cast使用
  12. 【问题解决】Selenium——NoSuchWindowException: Browsing context has been discarded
  13. vmd安装包_【MMD相关】推荐点软件/插件
  14. ubuntu修改u盘权限_Ubuntu下U盘只读文件系统,图标上锁,提示无法修改
  15. 正则表达式验证手机号码是否正确
  16. HTML5实现中国象棋游戏
  17. 《勒索软件防护发展报告(2022年)》正式发布,助力企业高效应对勒索软件攻击
  18. Java实现Linux的md5加密,Linux_详细讲解:Linux系统GRUB的MD5加密方法,1、用grub-md5-crypt成生GRUB的md5密 - phpStudy...
  19. 如何给TSM磁带机添加新磁带
  20. 乔·克拉克(Joe Clark)关于版权的胡思乱想

热门文章

  1. ugp和千幻魔镜买哪个好_2020年买VR盒子十大品牌推荐 VR手机盒子如何使用
  2. IMAP常用命令汇总
  3. 于的繁体字有几种写法_在繁体字中,“于”、“於”这两个字如何正确使用?...
  4. 2020年408真题_2020年港澳台联考真题——数学!
  5. haproxy配置timeout
  6. 中移动入侵防御设备集采,总限价1.6亿;爱立信斩获95个5G商用合同
  7. 人工智能之模式识别(二)
  8. 软件插件安装激活教程以及密钥
  9. android手机获取qq闪照的方法,QQ闪照怎么保存 闪照保存到手机的方法教程
  10. ResourceManager HA 配置