单个left join:

(1)一对一:结果表的行数=左表行数

(2)一对多:结果表的行数>左表行数

多个left join:

(0)多个left join由上到下,依次生成查询表,原理同单个left join

(1)需要补充的是,如果在left join a表之前,想先对a表做一个字段的筛选,不能在多个left join之后用where来条件过滤,因为,多个left join是优先于where执行的,如果用where是对多个left join之后的结果查询表进行的条件过滤。(这种很容造成结果错误,也就是结果数据不全)

应该用,left join ON 后+"and"去先过滤

a left join b ON a.id=b.id anda.isdel =0 b.status =1

left join c ON a.id =c.id andc.type=3

PS:有时候,单个left join、多个left join 需要跟select配合套多个"select马甲"使用,下边是一个很不错的常用模版套法:

(一般对于不知道什么时候起别名 什么时候用括号的老铁们 真实头疼  所以发个模板,可以根据自己的需求,进行套用)

https://www.cnblogs.com/LHWorldBlog/p/7753914.html

不多说 直接上语句

SELECT

a.id,

a.thumbNail,

a. NAME,

a.marketPrice,

a.memberPrice,

a.personName,

a. STATUS,

a.recieveOrderDate,

a.trackNumber,

a.contact,

a.reportSendDate,

b.trackNumber,

a.reportDownloadPath

FROM

(

SELECT

od.id,

ps.thumbNail,

ps. NAME,

od.marketPrice,

od.memberPrice,

od.personName,

od. STATUS,

od.recieveOrderDate,

ol.trackNumber,

ol.contact,

od.reportSendDate,

od.reportSendOrderLogisticId,

od.reportDownloadPath

FROM

orders.order_detail od

LEFT JOIN orders.order_logistics ol ON od.recieveOrderLogisticId = ol.id

LEFT JOIN orders.product_snapshot ps ON od.productSnapShotId = ps.id

WHERE

od.valid = TRUE

AND ol.valid = TRUE

AND od.orderId =?

) a

LEFT JOIN (

SELECT

ol.trackNumber,

od.id

FROM

orders.order_detail od

LEFT JOIN orders.order_logistics ol ON od.reportSendOrderLogisticId = ol.id

WHERE

od.valid = TRUE

AND ol.valid = TRUE

AND od.orderId =?

) b ON a.id = b.id

mysql left join计算数量_Mysql-多个left join 计算逻辑相关推荐

  1. mysql join子查询_MySQL的多表join中,子查询伤不起啊!

    leader找到我,说下面的sql执行后cpu100%,但是这三张join的表数据量都在2W左右,不应该啊,是不是数据库服务器配置出了问题啊.sql如下: select a.excel_id, a.r ...

  2. mysql统计去重记录数量_MySQL分组后,如何统计记录条数

    MySQL分组后,统计记录条数的方法:1.统计记录条数,代码为[SELECT num,count(*) AS counts from test_a GROUP BY num]:2.对num去重后的数量 ...

  3. mysql数据库交叉连接_MySQL交叉连接(CROSS JOIN)

    在本教程中,您将了解MySQL CROSS JOIN子句以及如何应用它来解决一些有趣的数据问题. MySQL CROSS JOIN子句简介 CROSS JOIN子句从连接的表返回行的笛卡儿乘积. 假设 ...

  4. left join 一对多_MYSQL 连接查询算法:JOIN语句在 MYSQL 内部到底是怎么执行的

    前言 我们从一个问题引入今天的主题. 在日常业务开发中,我们可能经常听到 DBA 对我们说"不要"(注意:不是禁止)使用 join,那么为什么 DBA 对 join 这么抵触呢?是 ...

  5. mysql不用left join_MySQL在右表数据不唯一的情况下使用left join的方法_MySQL - join

    一.Join语法概述join 用于多表中字段之间的联系,语法如下:... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditionatable1:左表 ...

  6. mysql中的联结_MySQL的联结(Join)语法

    MySQL的联结(Join)语法 1.内联结.外联结.左联结.右联结的含义及区别: 在讲MySQL的Join语法前还是先回顾一下联结的语法,呵呵,其实连我自己都忘得差不多了,那就大家一起温习吧(如果内 ...

  7. mysql校验日期是否有效_Mysql 根据出生日期计算年龄 判断起始日期是否在某个有效时间段内等日期Hack汇总...

    关于Mysql格式化等常见日期处理相关函数说明,大家可以参考之前的一篇博文: mysql 根据出生日期计算年龄.日期格式化等常见日期处理相关函数使用汇总.根据以往的项目经验,本文总结并汇总了一些Mys ...

  8. mysql outer join的用法_MySQL中join的用法

    JOIN的含义就如英文单词"join"一样,连接两张表,大致分为内连接,外连接,右连接,左连接,自然连接.这里描述先甩出一张用烂了的图,然后插入测试数据. 笛卡尔积:CROSS J ...

  9. mysql去重查询数量_mysql 数据去重

    数据库版本mysql5.5.10  操作工具navicate for mysql 插入数据重复了   用mysql语句去重 --  查询数量是否大于1 大于1  表示有重复数据 SELECT  cou ...

最新文章

  1. MyBatisPlus中updateById与updateAllColumnById方法区别
  2. 系统检测到您正在使用网页抓取工具_【安全】58反抓取简介
  3. zabbix入门之添加监控项
  4. java web 中 读取windows图标并显示
  5. windows 配置squid反向代理服务器
  6. 三端线性稳压器工作原理与典型应用电路分析——78XX与LM317
  7. vgg16 清华镜像_Python models.vgg16方法代码示例
  8. 双绞线的规范和制作经验谈
  9. Mac电脑C盘空间不足怎么办?
  10. require.context()的用法
  11. slack 开源系统_Slack团队聊天的5种开源替代品
  12. 若有下列共用体定义_若有下列共用体定义:
  13. [洛谷P2698] [USACO12MAR]花盆Flowerpot
  14. 软件——Jira是什么
  15. Brave vs Google Chrome:哪个浏览器更适合你?
  16. 为什么戏说php,戏说PHP的嵌套函数
  17. 磊科wifi linux驱动下载,磊科随身WiFi驱动
  18. CTC Global宣布ACCC InfoCore™系统和首次商业部署
  19. 必须背单词、学语法?不,说一口地道的英语可以更容易!
  20. Double.parseDouble是什么?

热门文章

  1. 综述 | 从第一性原理出发,探索类脑智能研究的星辰大海
  2. android glide设置缓存大小,Glide4-入门教程-5-缓存机制(内存缓存和磁盘缓存)
  3. 声学特征(四) pitch-yin代码实现
  4. 剧情介绍:“热血教师”
  5. jQuery和SVG炫酷弹射纸飞机动画特效
  6. 爬取某招聘网站的招聘信息(猎聘)
  7. 阿里云代理商(聚搜云):这是云计算最好的时代
  8. python爬虫——12306查询车次
  9. cocos 文字 TextAtlas TextBMFont Text
  10. intel 12代异构处理器 + win11平台,使用VMware安装Linux系统出现键盘输入有延迟问题