MySQL多表查询之GroupBy
需求:根据主键id查询到该顾客最近的一次消费记录
SQL代码如下:
SELECTcbi.id,cbi.mob,cbi.identity_card,bcil.remark,bcil.orders_no,bcil.brand_no,bcil.with_date,bcil.scoreFROMcustomer_base_info cbiLEFT JOIN(SELECTA.customer_id,A.with_date,A.remark,A.orders_no,A.brand_no,A.scoreFROMbrand_customer_integral_log A,(SELECTcustomer_id,MAX(with_date)max_with_dateFROMbrand_customer_integral_logGROUP BYcustomer_id)BWHEREA.customer_id = B.customer_idAND A.with_date = B.max_with_date) bcil ON (bcil.customer_id = cbi.id)WHEREcbi.id = '2c914df34997e204014997e2fe4e0001'
用到的两张表:customer_base_info表为顾客基本信息,brand_customer_integral_log顾客消费记录表。
一个顾客对应多个消费记录, 即一对N的。所以用customer_base_info去左连接。我第一反映也是和很多人一样直接左连接brand_customer_integral_log然后取ORDER BY(消费时间),最后根据customer_id来GROUP BY。 但结果是不对的。
这是因为MySQL:
写的顺序:select ... from... where.... group by... having... order by..
执行顺序:from... where...group by... having.... select ... order by...
在ORDER By之前结果就已经SELECT出来了, 所以这样的思路得到的结果是错误的。
选用子查询来解决这个问题:
SELECTA.customer_id,A.with_date,A.remark,A.orders_no,A.brand_no,A.scoreFROMbrand_customer_integral_log A,(SELECTcustomer_id,MAX(with_date)max_with_dateFROMbrand_customer_integral_logGROUP BYcustomer_id)BWHEREA.customer_id = B.customer_idAND A.with_date = B.max_with_date
把brand_customer_integral_log内连接, 根据customer_id查询出MAX(with_date)最近消费时间, 这样得到的才是所要的该顾客最近消费记录。
结果如下:
MySQL多表查询之GroupBy相关推荐
- mysql多列 groupby,MySQL多表查询之GroupBy
需求:根据主键id查询到该顾客最近的一次消费记录 SQL代码如下: SELECT cbi.id, cbi.mob, cbi.identity_card, bcil.remark, bcil.order ...
- java mysql 多表查询_解析Mysql多表查询的实现
查询是数据库的核心,下面就为您介绍Mysql多表查询时如何实现的,如果您在Mysql多表查询方面遇到过问题,不妨一看. Mysql多表查询: CREATE TABLE IF NOT EXISTS co ...
- mysql多表查询详解_MySQL多表查询详解上
时光在不经意间,总是过得出奇的快.小暑已过,进入中暑,太阳更加热烈的绽放着ta的光芒,...在外面被太阳照顾的人们啊,你们都是勤劳与可爱的人啊.在房子里已各种姿势看我这篇这章的你,既然点了进来,那就由 ...
- mysql教程多表查询_解析Mysql多表查询的实现
查询是数据库的核心,下面就为您介绍Mysql多表查询时如何实现的,如果您在Mysql多表查询方面遇到过问题,不妨一看. Mysql多表查询: CREATE TABLE IF NOT EXISTS co ...
- 零基础带你学习MySQL—多表查询笛卡尔集(二十)
零基础带你学习MySQL-多表查询笛卡尔集(二十) 一.多表查询 多表查询:就是指基于两个和两个以上的表的查询,在实际应用中,单个表并不能满足你的需求,我们经常需要在很多个表之间查询数据 二.笛卡尔集 ...
- mysql 大表查询慢_mysql大表查询慢怎么优化?
mysql大表查询慢的优化方法:1.合理建立索引,通常查询利用到索引比不用索引更快:2.对关键字段建立水平分区,比如时间字段,若查询条件往往通过时间范围来进行查询,能提升不少性能:3.建立粗粒度数据表 ...
- mysql锁表查询和解锁操作
mysql锁表查询和解锁操作 1.在做数据库操作时,有时会因为自己的粗心或者程序设计上的缺陷导致锁表,在mysql中查看锁表和解锁的步骤如下: //1.查看当前数据库锁表的情况SELECT * FRO ...
- Mysql 多表查询详解
Mysql 多表查询详解 一.前言 二.示例 三.注意事项 一.前言 上篇讲到Mysql中关键字执行的顺序,只涉及了一张表:实际应用大部分情况下,查询语句都会涉及到多张表格 : 1.1 多表连接有 ...
- Mysql多表查询效率的研究(一)
Mysql多表查询效率的研究(一) 本文探究了mysql InnoDB引擎在多表查询的应用场景下,使用子表.内连接和左联接运行速度的差别,并且比较了索引使用与否对查询效率的影响. 第一部分简略地概括了 ...
最新文章
- 基于运动信息的物体检测(背景差分法、帧间差分法和光流法)。
- Linux那些事儿 之 戏说USB(10)模型,又见模型
- java中instanceof使用详细介绍
- Django复习:模型与管理网站
- php定位符,浅析PHP正则表达式定位字符
- php 抽象类 接口 区别,php中接口、抽象类以及接口和抽象类区别详解
- Kafka 设计与原理详解(一)
- 计算机vb小游戏,用vb6.0做一个小游戏
- PHP的CI框架接入redis
- RestClient 接口测试实践
- matlab hspice联合仿真,matlab hspice
- 使用R绘制花瓣图_2020-11-10
- FusionAccess桌面云介绍
- 大数据经典学习路线(及供参考)资料群:905572354(新群)
- linux 拼图游戏,2020经典宝石拼图
- 第十六章 时间序列数据分析基本概念
- 调试服务器用便携显示器,再也不用担心出门没游戏玩了-------自制HORI便携显示器 (试做版)...
- 城市公交查询系统c语言,Android的城市公交查询系统
- 【Bug】AttributeError: module ‘gast‘ has no attribute ‘Index‘
- 什么是流动性质押?什么是农场质押?
热门文章
- 计算机信息安全四大要素,信息安全技术题库:访问控制的基本要素包括以下( )。...
- vue+echarts+json绘制地图“绝对干货”
- 植物2 IOS 怎么实名认证_和平精英防沉迷解除方法 和平精英实名认证强制下线休息怎么解除...
- ipad屏幕旋转后的代理
- 英雄联盟手游国服服务器维护,英雄联盟手游国服连接超时解决方法_英雄联盟手游国服连接超时怎么办_玩游戏网...
- 诗佛王维,眼前的苟且和远方的田野?
- 服务器皮肤显示mod怎么用,Dota2自制皮肤怎么用 Dota2替换mod使用教程
- 苹果手机耗电快_苹果耗电快怎么办?赶紧关掉这4个耗电设置,关掉后,省电又好用...
- c语言五个水手分椰子答案,zstu.4014.水手分椰子(数学推导)
- 痛跳一次456,心暴出爆2147,鞭笞每秒426