需求:根据主键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相关推荐

  1. mysql多列 groupby,MySQL多表查询之GroupBy

    需求:根据主键id查询到该顾客最近的一次消费记录 SQL代码如下: SELECT cbi.id, cbi.mob, cbi.identity_card, bcil.remark, bcil.order ...

  2. java mysql 多表查询_解析Mysql多表查询的实现

    查询是数据库的核心,下面就为您介绍Mysql多表查询时如何实现的,如果您在Mysql多表查询方面遇到过问题,不妨一看. Mysql多表查询: CREATE TABLE IF NOT EXISTS co ...

  3. mysql多表查询详解_MySQL多表查询详解上

    时光在不经意间,总是过得出奇的快.小暑已过,进入中暑,太阳更加热烈的绽放着ta的光芒,...在外面被太阳照顾的人们啊,你们都是勤劳与可爱的人啊.在房子里已各种姿势看我这篇这章的你,既然点了进来,那就由 ...

  4. mysql教程多表查询_解析Mysql多表查询的实现

    查询是数据库的核心,下面就为您介绍Mysql多表查询时如何实现的,如果您在Mysql多表查询方面遇到过问题,不妨一看. Mysql多表查询: CREATE TABLE IF NOT EXISTS co ...

  5. 零基础带你学习MySQL—多表查询笛卡尔集(二十)

    零基础带你学习MySQL-多表查询笛卡尔集(二十) 一.多表查询 多表查询:就是指基于两个和两个以上的表的查询,在实际应用中,单个表并不能满足你的需求,我们经常需要在很多个表之间查询数据 二.笛卡尔集 ...

  6. mysql 大表查询慢_mysql大表查询慢怎么优化?

    mysql大表查询慢的优化方法:1.合理建立索引,通常查询利用到索引比不用索引更快:2.对关键字段建立水平分区,比如时间字段,若查询条件往往通过时间范围来进行查询,能提升不少性能:3.建立粗粒度数据表 ...

  7. mysql锁表查询和解锁操作

    mysql锁表查询和解锁操作 1.在做数据库操作时,有时会因为自己的粗心或者程序设计上的缺陷导致锁表,在mysql中查看锁表和解锁的步骤如下: //1.查看当前数据库锁表的情况SELECT * FRO ...

  8. Mysql 多表查询详解

    Mysql 多表查询详解 一.前言  二.示例 三.注意事项 一.前言  上篇讲到Mysql中关键字执行的顺序,只涉及了一张表:实际应用大部分情况下,查询语句都会涉及到多张表格 : 1.1 多表连接有 ...

  9. Mysql多表查询效率的研究(一)

    Mysql多表查询效率的研究(一) 本文探究了mysql InnoDB引擎在多表查询的应用场景下,使用子表.内连接和左联接运行速度的差别,并且比较了索引使用与否对查询效率的影响. 第一部分简略地概括了 ...

最新文章

  1. 基于运动信息的物体检测(背景差分法、帧间差分法和光流法)。
  2. Linux那些事儿 之 戏说USB(10)模型,又见模型
  3. java中instanceof使用详细介绍
  4. Django复习:模型与管理网站
  5. php定位符,浅析PHP正则表达式定位字符
  6. php 抽象类 接口 区别,php中接口、抽象类以及接口和抽象类区别详解
  7. Kafka 设计与原理详解(一)
  8. 计算机vb小游戏,用vb6.0做一个小游戏
  9. PHP的CI框架接入redis
  10. RestClient 接口测试实践
  11. matlab hspice联合仿真,matlab hspice
  12. 使用R绘制花瓣图_2020-11-10
  13. FusionAccess桌面云介绍
  14. 大数据经典学习路线(及供参考)资料群:905572354(新群)
  15. linux 拼图游戏,2020经典宝石拼图
  16. 第十六章 时间序列数据分析基本概念
  17. 调试服务器用便携显示器,再也不用担心出门没游戏玩了-------自制HORI便携显示器 (试做版)...
  18. 城市公交查询系统c语言,Android的城市公交查询系统
  19. 【Bug】AttributeError: module ‘gast‘ has no attribute ‘Index‘
  20. 什么是流动性质押?什么是农场质押?

热门文章

  1. 计算机信息安全四大要素,信息安全技术题库:访问控制的基本要素包括以下( )。...
  2. vue+echarts+json绘制地图“绝对干货”
  3. 植物2 IOS 怎么实名认证_和平精英防沉迷解除方法 和平精英实名认证强制下线休息怎么解除...
  4. ipad屏幕旋转后的代理
  5. 英雄联盟手游国服服务器维护,英雄联盟手游国服连接超时解决方法_英雄联盟手游国服连接超时怎么办_玩游戏网...
  6. 诗佛王维,眼前的苟且和远方的田野?
  7. 服务器皮肤显示mod怎么用,Dota2自制皮肤怎么用 Dota2替换mod使用教程
  8. 苹果手机耗电快_苹果耗电快怎么办?赶紧关掉这4个耗电设置,关掉后,省电又好用...
  9. c语言五个水手分椰子答案,zstu.4014.水手分椰子(数学推导)
  10. 痛跳一次456,心暴出爆2147,鞭笞每秒426