MySQL left join 20161024

 公司OA系统上部门上线了一套流程,总部和分公司部门提数据需求都要走线上流程,审批,想想也是不错的,能和绩效更加合理的挂钩,还有打分评价,双向互动。

 下午接到一个需求,查看某分公司上周订单使用优惠券情况,公司数据库里有一个表是优惠券的,每个订单编号后面跟着这个订单的订单金额,使用优惠券金额,

 这个数据需求了解的主要是优惠券支出在营业额中的占比,因此上来看到需求,脑子里首先想到的是left join  一个是优惠券表一个是订单表 通过订单ID 连接。

 一开始考虑少了,以优惠券表为主表,再去连接的订单表,做完发现一个现象,有使用优惠券的订单ID 居然没有订单额,后来想了想,和实际业务偏离了一下,下订单过程中使用优惠券,如果退货掉这条记录会为null  因此 要以订单表为主表 再以优惠券为从表,这样,所有订单使用优惠券的情况就出来了

因此 left  join  主表最好是全面的表,用小的条件挂靠在大的表里,再去进行条件筛选

时间: 2024-10-12 17:22:50

MySQL left join 20161024的相关文章

mysql的join操作

一.Join语法概述 join 用于多表中字段之间的联系,语法如下: ... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona table1:左表:table2:右表. JOIN 按照功能大致分为如下三类: INNER JOIN(内连接,或等值连接):取得两个表中存在连接匹配关系的记录. LEFT JOIN(左连接):取得左表(table1)完全记录,即是右表(table2)并无对应匹配记录. RIGHT JOIN(右连接):与 LEF

MySQL Full Join的实现

MySQL Full Join的实现 由于MySQL不支持FULL JOIN,以下是替代方法 left join + union(可去除反复数据)+ right join select * from A left join B on A.id = B.id (where 条件) union select * from A right join B on A.id = B.id (where条件);

MySQL的JOIN(三):JOIN优化实践之内循环的次数

这篇博文讲述如何优化内循环的次数.内循环的次数受驱动表的记录数所影响,驱动表记录数越多,内循环就越多,连接效率就越低下,所以尽量用小表驱动大表.先插入测试数据. CREATE TABLE t1 ( id INT PRIMARY KEY AUTO_INCREMENT, type INT ); SELECT COUNT(*) FROM t1; +----------+ | COUNT(*) | +----------+ | 10000 | +----------+ CREATE TABLE t2 (

MySQL INNER JOIN

Summary: in this tutorial, you will learn how to use MySQL INNER JOIN clause to select data from multiple tables based on join conditions. Introducing MySQL INNER JOIN clause The MySQL INNER JOIN clause matches rows in one table with rows in other ta

MySQL的JOIN(一):用法

JOIN的含义就如英文单词"join"一样,连接两张表,大致分为内连接,外连接,右连接,左连接,自然连接.这里描述先甩出一张用烂了的图,然后插入测试数据. CREATE TABLE t_blog( id INT PRIMARY KEY AUTO_INCREMENT, title VARCHAR(50), typeId INT ); SELECT * FROM t_blog; +----+-------+--------+ | id | title | typeId | +----+--

Mysql Nested-Loop Join Algorithms

MySQL在多表之间执行join时,利用一种nested-loop algorithm 或者其变种:(嵌套循环)  Nested-Loop Join Algorithm      一个简单的嵌套循环连接(NLJ)算法 从第一个表读取一行,然后传递给Join中的其他表依次读取,过程一直重复剩余的表都被Join. 假设在三个表t1,t2,t3做连接时: Table Join Type t1 range t2 ref t3 ALL 如下: for each row in t1 matching ran

MySQL的Join使用

在MySQL(以5.1为例)中,表连接的语法可以参见MySQL官方手册:MySQL官方手册-JOIN 在查询中,连接的语法类似 [sql] view plaincopy SELECT select_expr FROM table_references table_references(对表的引用)的定义如下(也可以看成连接表达式):(晕晕晕哈) [sql] view plaincopy table_references: table_reference [, table_reference] .

MYSQL中JOIN的用法

近期用phpcms v9做项目,初期没有问题,后期随着数据量的增大,phpcms v9后台出现的栏目更新不动的情况,初期我以为是程序的问题,进行了程序排查,没有发现任何问题,登录上centos服务器后free命令发现内存也没有满.瞬间感觉很蛋疼,不知如何处理,后来登录阿里云账号,发现更新栏目时,cpu使用率直接到达100%,xhell远程登录进入服务器后用top检测cpu使用率的情况,发现MySQL占用的cpu使用率的100%,直接登录进入MySQL数据库,输入show full process

Mysql的join语句

mysql超强功能之一:join # group by 必须放在 order by 和 limit之前,不然会报错 # 你可以在 SELECT, UPDATE 和 DELETE 语句中使用 Mysql 的 JOIN 来联合多表查询. # JOIN 常用分为如下三类(但不仅仅只有这三类): # INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录:使用MySQL的INNER JOIN(也可以省略 INNER 使用 JOIN,效果一样) # LEFT JOIN(左连接):获取左