前一段时间,同学写sql碰到一个问题:两段sql连接看似一样,但是条数却不一样。原因是在左连接之后的where条件对数据进行了筛选,使得数据变少了。两段sql如下:

select count(1)from (select *from KXAPP.I_CASH_LOAN_WHITELIST_C2_V_NEW bwhere b.BG_DT < '20180820'and b.EN_DT >= '20180904') ghleft join (select *from KXAPP.I_CASH_LOAN_WISH_SCOREwhere busi_dt = '20180820') hgon gh.loan_no = hg.loan_no
select count(1)from KXAPP.I_CASH_LOAN_WHITELIST_C2_V_NEW bleft join KXAPP.I_CASH_LOAN_WISH_SCORE con b.loan_no = c.loan_nowhere b.BG_DT < '20180820'and b.EN_DT >= '20180904'and busi_dt = '20180820') hg

乍一看,两段sql好像没有什么区别。第一个是先通过条件取子表,再链接;第二个是先进行链接,在通过条件进行筛选。统计后,发现上边的数据量要比下面的多。

其实这两个链接是有区别的。第一种链接方式,主表是gh;第二种链接方式,主表是b。第二种链接方式数据量少于第一种链接方式的原因是:链接后添加了where对链接结果进行了筛选。

下面通过一个例子说明:

表A结构如下:

表B结构如下:

select *from (select 1 as a, 2 as bfrom dualunion allselect 2 as a, 2 as b from dual) aleft join (select 3 as a, 2 as bfrom dualunion allselect 2 as a, 2 as b from dual) bon a.a = b.aand b.a = 1;

select *from (select 1 as a, 2 as bfrom dualunion allselect 2 as a, 2 as b from dual) aleft join (select 3 as a, 2 as bfrom dualunion allselect 2 as a, 2 as b from dual) bon a.a = b.awhere b.a = 1;

SQL左连接数据变少相关推荐

  1. SQL左连接或者右连接数据变少

    SQL左连接或者右连接数据变少: 主要看这两篇文章就可以: https://blog.csdn.net/lz_peter/article/details/83185909 https://blog.c ...

  2. sql左连接、右连接、内连接有什么区别?

    sql左连接.右连接.内连接有什么区别? 总结:语法公式不同.基础表不同.结果集不同. 一.语法公式不同: 左连接: 左连接的关键字是left join,语法公式为select *from dave ...

  3. sql左连接和右连接区别是什么?

    sql左连接和右连接区别是什么? sql左连接和右连接区别是:左连接会读取左边数据表的全部数据,即使右边数据表没有对应数据:而右连接会读取右边数据表的全部数据,即使左边数据表没有对应数据. 左连接: ...

  4. SQL左连接,右连接,内连接简单例子

    SQL左连接,右连接,内连接简单例子 左连接:以左表为主 select column_a , column_b from table_a left join table_b on table_a.id ...

  5. sql左连接出现重复数据

    情况说明:只需左表数据,右表数据只作为条件存在,左表数据与右边有1:n关系,左连接出现重复数据 原因分析:由于1:n关系,右边数据连接后处于隐藏状态(类似),实际上数据未重复,由于只显示左边数据,就形 ...

  6. oracle左连接数据会对不上吗,一周工作总结–左连接造成的一些问题-Oracle

    一周工作总结–左连接造成的一些问题 今天有同事告诉我,有个SQL执行了好久好久执行不出来,我说好就是多久?她说一天左右了.真是令人咋舌的SQL.于是我要来了SQL看了看执行计划,确实让人咋舌. 下图中 ...

  7. sql左连接排序取第一个_详解kettle工具记录集连接功能及实验测试

    概述 今天主要介绍下kettle的记录集连接功能和一些注意点. 一.什么是记录集连接 记录集连接可以实现数据集合的关联,也分为内连接,左连接,右连接,外连接. 多表的join,可以直接用sql写入[表 ...

  8. SQL 左连接中on后面加where和加and的区别

    阅读目录 1.首先来谈谈什么是left join 2.再来谈谈on后面使用and和where的区别 3.总结 今天的最佳表现应该作为明天的最低要求 1.首先来谈谈什么是left join left j ...

  9. SQL——左连接(Left join)、右连接(Right join)、内连接(Inner join)

    文章目录 前言 一.概念 二.例子 总结 前言 最近在做SQL相关的练习,发现以前那么自信的SQL放久了不碰也变得棘手起来,特别是这一块表之间的内外连接.所以这篇是关于这个内外连接的整理. 一.概念 ...

最新文章

  1. 【讲人话】Angular如何通过@ViewChildren获取实时渲染的动态DOM节点元素(@ViewChild只能获取静态的固定DOM节点)
  2. sc修改服务器,华为sc服务器配置方法
  3. JUnit注解与hamcrest
  4. 【多线程】阻塞队列的C++多线程 实现 BlockingQueue
  5. android 卡片3d效果_小米发布伸缩镜头技术:卡片机失业,多摄下岗?
  6. Nginx 模块开发高级篇
  7. ASP.NET---- Microsoft .NET Pet Shop 3.x(-)
  8. 文本编辑软件哪个好_过年倒计时软件哪个好 过年倒计时软件推荐
  9. 【报告分享】2020技术趋势报告-德勤-202003.pdf(附120页pdf原文下载链接)
  10. WCF 第一章 总结
  11. ai怎么调界面大小_Illustrator怎么设置调整界面网格呢?
  12. h5前端 调用手机通讯录
  13. 图像处理经典算法及OpenCV程序
  14. matplotlib绘制鼠标的十字光标(自定义方式,官方实例)
  15. orcad 连mysql_如何在OrCAD中建立电气互连
  16. Deeplearning4j 快速入门
  17. C语言输入10名同学3门课,输入10个学生3门课的成绩,统计各科全部及格的人数(c语音)...
  18. (高小德用车)高仿滴滴/快的应用源码
  19. python+django大学教室自习室预约管理系统
  20. Mac上关闭Microsoft AutoUpdate的升级弹窗

热门文章

  1. 基于SSM个人财务|记账|账单收入支出统计管理系统
  2. python的坏处_六星教育:爬虫还分好坏?恶意爬虫到底会给你生活造成多大危害?...
  3. 如果说数据是数字经济的新石油,那么人工智能(AI)就是蒸汽机
  4. 软件开发项目中的成本比例
  5. 银行固定资产管理的解决方案
  6. Django-website 程序案例系列-5 模态对话框实现提交数据
  7. Caused by: java.lang.ClassNotFoundException: org.aspectj.weaver.reflect
  8. vivoNEX来了,高科技能否驱散手机冬天的寒冷?
  9. HTML5 桌面通知:Notification API 的应用
  10. 服务器显卡显示pci设备,已解决: R720在PCIE插槽加上独立显卡gtx750ti后,风扇狂转,怎么降速? - Dell Community...