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

需求:根据主键id查询到该顾客最近的一次消费记录

SQL代码如下:

SELECT

cbi.id,

cbi.mob,

cbi.identity_card,

bcil.remark,

bcil.orders_no,

bcil.brand_no,

bcil.with_date,

bcil.score

FROM

customer_base_info cbi

LEFT JOIN(

SELECT

A.customer_id,

A.with_date,

A.remark,

A.orders_no,

A.brand_no,

A.score

FROM

brand_customer_integral_log A,

(

SELECT

customer_id,

MAX(with_date)max_with_date

FROM

brand_customer_integral_log

GROUP BY

customer_id

)B

WHERE

A.customer_id = B.customer_id

AND A.with_date = B.max_with_date

) bcil ON (bcil.customer_id = cbi.id)

WHERE

cbi.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出来了, 所以这样的思路得到的结果是错误的。

选用子查询来解决这个问题:

SELECT

A.customer_id,

A.with_date,

A.remark,

A.orders_no,

A.brand_no,

A.score

FROM

brand_customer_integral_log A,

(

SELECT

customer_id,

MAX(with_date)max_with_date

FROM

brand_customer_integral_log

GROUP BY

customer_id

)B

WHERE

A.customer_id = B.customer_id

AND A.with_date = B.max_with_date

把brand_customer_integral_log内连接, 根据customer_id查询出MAX(with_date)最近消费时间, 这样得到的才是所要的该顾客最近消费记录。

结果如下:

850ca76f2f143d251bf76928d9b42159.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527144.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java j2ssh替代jsch,jsch设置ssh协商算法优先级

最近接触jsch这个包,发现在默认情况下,jsch登录ssh的时候,协商的加密算法和mac算法都不是最高优先级的,这个时候需要手动配置一下算法列表,将强度高的调整在算法列表的前面,这样ssh链接的时候,如…

java 截取汉字首字母,java 取汉字首字母

有时候,可能会有一些类似这样的需求:对于这样的效果,我们可以有类似这样的解决方案:package bys.utils;import java.io.UnsupportedEncodingException;/*** Created by toutou on 2014/2/21*/public class ChineseCharacterHelper…

linux操作系统网络,网络安装linux操作系统

网络安装安装的准备首先配仓库然后需要安装的服务Yun y install tftp-serverYum y install dhcp开始实验配仓库安装tfpt包并进行配置Tftp-server dhcp tftp后,会在/var/lib/tftpboot这个文件,这个文件是作为linux安装的引导文件,将/mnt/isoli…

Linux使用ftp传输10g的文件,Ubuntu 16.04 安装ftp服务器传输文件

最近在搞深度学习,老师比较宝贝他的服务器,要求我以后负责管理服务器。往后所有要使用服务器的人都必须向我申请账号,然后只允许客户端访问,使用文件传输软件传输文件。像我这样一个Linux菜逼,这种要求不是赶鸭子上架嘛…

linux创建文件内容三行,shell之创建文件及内容的方法示例

shell之创建文件夹:[rootvbox-nginx shell_command]# vi ./mkdir.sh#!/bin/shparentDir"/media/sf_Project/self/smarty-frame/application/$1"fileName$2dirAndName$parentDir/$fileNameif [ ! -d "$dirAndName" ];thenmkdir $dirAndNameecho …

linux设备模型的主要功能,Linux设备模型(3)

Linux设备模型(3)_Uevent作者:蜗蜗 发布于:2014-3-10 20:39分类:统一设备模型1. Uevent的功能Uevent是Kobject的一部分,用于在Kobject状态发生改变时,例如增加、移除等,通知用户空间程序。用户空间程序收到…

lua_path环境变量设置linux,ubuntu16.04安装lua环境

1.官网下载源码 https://www.lua.org/download.htmlcurl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gztar zxf lua-5.3.5.tar.gzcd lua-5.3.5make linux test2.安装中报错lua.c:82:31: fatal error: readline/readline.h: 没有那个文件或目录compilation terminated.: recip…

皮尔洛和c罗讲什么语言,皮尔洛:如果我跟C罗是队友 我可能能成历史助攻王

皮尔洛:欧冠夺冠热门不包含皇马腾讯体育11月2日讯 近日皮尔洛在接受媒体采访时表示,本赛季欧冠的争夺将会十分激烈,除了尤文外,有四支球队也是欧冠桂冠有利的争夺者,但并不包括卫冕冠军皇马。另外皮尔洛还表示&#xf…

android 调用系统短信接口开发,聚合数据Android SDK 短信api接口验证演示示例

1.到libs聚合SDK是聚合数据平台,为移动开发者提供的免费数据接口.使用前请先到聚合平台(http://www.juhe.cn/)注册,申请相关数据.2.下载聚合数据SDK,将开发包里的smscaptcha_sdk_v_1_1.jar拷贝到libs根目录下,将libJuheSDK_v_1_0.so拷贝到libs\armeabi目录下,如图:3…

代码混淆android.mk,利用ollvm进行代码混淆

OLLVM简介OLLVM(Obfuscator-LLVM)是瑞士西北应用科技大学于2010年6月份发起的一个项目,该项目旨在提供一套开源的针对LLVM的代码混淆工具,以增加对逆向工程的难度。OLLVM是基于LLVM实现的,LLVM是一个编译器框架,它也采用经典的三段…

鸿蒙系统的适配国产手机,真正的好消息!其它国产机,也在适配华为鸿蒙系统...

众所周知,据华为消费者业务软件部总裁王成录的说法,今年6月初,华为手机就能全面升级鸿蒙2.0,迟到近两年的、真正的“一夜之间就可以替换掉安卓”。而近日,又传出了真正的好消息,那就是其它国产手机厂商&…

三星s4 android 6.0吗,快了 三星手机适配Android 6.0时间公布

快了 三星手机适配Android 6.0时间公布2016年01月26日 00:04作者:董岩编辑:董岩文章出处:泡泡网原创分享作为全球范围内无可争议的安卓手机巨头之一,三星在为其旗下手机适配安卓新系统方面历来算是相当上心的一个厂家。日前就已经…

xrdpdf卡片在哪可下载_暑假学习英语字母,就是这样简单(附可打印字母卡下载)...

英语字母是所有英语学习的基础,所以,要想学好英语,第一步,必须是学好字母,为后面的更深层次的学习打下坚实的根基。今天,我们给大家分享最全面的英文字母学习法,建议收藏,文章最后附…

32 位的有符号整数_leetcode 7 整数反转

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123 输出: 321示例 2:输入: -123 输出: -321示例 3:输入: 120 输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根…

安卓帧数监测软件_扬尘在线监测系统实现工地智能监控

近年来,随着越来越多的建设项目在建设中,建筑工地越来越广泛。传统人力检查的检查结果主要依靠估计,难以量化和分析,导致相应处罚的科学依据不足。扬尘在线监测系统实现了对施工现场的智能检测,可以对施工现场扬尘进行…

html 切换主题,html切换主题实现方案

方案一使用css的var属性,当然此时不考虑低版本浏览器。1,在default.css主题根元素定义颜色变量:root {--main_color: #03a9f4; // 主题色--main_light: #33baf7; // 二级主题色 常用背景为主题色下的hover--main_lighter: #65caf5; // 三级主题色 常用bo…

json取数据怎么取_干货速递丨书名应该怎么取?

很多作者开书前都会遇到这个困扰:“什么样的书名是好的?”在跟一线编辑广泛交流后,大家普遍认为:一个好书名,既应该是能突出作品内容特点、故事主题,又具有一定的趣味性的,能吸引读者&#xff0…

android加一减一控件,Android的步进器(增加/减少值)控件?

用于Android的步进器(增/减值)控件?没有像Android中的Stepper这样的内置控件但是您可以尝试这种方式android:layout_width"wrap_content"android:background"#ffffff"android:layout_height"wrap_content"android:orientation"h…

安装教程rtx2080ti_点云深度学习环境配置指南(一)Ubuntu16.04+RTX2080ti

【今日导读】想做点云深度学习?先把环境配置好吧。本期为初学者带来环境配置指南,有需求的同学赶快上手吧。配置为:Ubuntu16.04RTX2080tiNVIDIA驱动cuda10.1cudnn7.5。一、安装NVIDIA驱动法一(优先推荐):先添加NVIDIA 的ppa 源&am…

计算机管理员相关知识,计算机管理员述职报告范文

计算机管理员述职报告范文计算机管理员述职报告范文尊敬的医院领导:我叫xxx,20xx年7月毕业于西南计算机科学与技术专业。20xx年8月到医院工作,从事网络管理工作已有4年时间,能够胜任本职工作,现将任职以来的主要工作报…