mysql多表左联分组查询

article/2025/9/17 21:33:34

在做项目的时候需要实现一个多表左联加分组查询的逻辑。
下图是前端要显示的数据:
在这里插入图片描述
数据来源于三张表:

  • ETC表:cap_etc
  • 车辆表:cap_vehicle
  • ETC消费表:cap_etc_record

下图是后台的三张数据表:
cap_etc:
在这里插入图片描述
cap_vehicle:
在这里插入图片描述
cap_etc_record:
在这里插入图片描述
涉及的问题:

  1. 如何将三张表的数据联系起来
  2. 前台显示的最近消费时间如何获取
  • 端显示数据的主体是ETC数据表里的数据,其中车型、最近消费时间、余额这三个字段即使没有查到,也要显示主体的ETC表数据,所以对于三张表数据的联查,要使用左联查询,将ETC表作为主表,左联车辆表和消费记录表
    ETC连接车辆表的字段为:车牌号 vehicle_num
    ETC连接消费表的字段为:绑定消费表字段 etc_id
    所以到目前为止,可以将三张表进行左联查询,其中sql语句为:
SELECTce.id,ce.etc_account,ce.etc_status,ce.vehicle_num,cer.card_balance,use_time
FROMcap_etc ce
LEFT JOIN cap_vehicle cv ON ce.vehicle_num = cv.vehicle_num
LEFT JOIN cap_etc_record cer ON cer.id = ce.id

目前为止,已经使用左联查询将三张表连接起来了,不过对于第二个问题还没有解决,一张etc卡会有多条消费记录,其中前端要显示最近的一条消费记录,那么现在的问题就是:

  • 要找到每一张etc卡对应的最近消费时间

这时候我们就要通过ETC的id来分组,查询对应一组消费记录中的最近消费时间:
如何查询一组数据中的最近消费时间呢?
我们可以用用order by来获取最近的一条消费记录,注意要加一个limit限定,只查询出一条记录

SELECT id FROM cap_etc_record r ORDER BY r.use_time DESC LIMIT 1

最近消费时间也查出来了,现在只剩下ETC卡id分组了,分组的话可直接使用group by
但是在这个业务逻辑中,我们使用可直接通过查条件来实现分组,以下是完整的查询sql语句:

SELECTce.id,ce.etc_account,ce.etc_status,ce.vehicle_num,cer.card_balance,use_time
FROMcap_etc ceINNER JOIN cap_vehicle cv ON ce.vehicle_num = cv.vehicle_numLEFT JOIN cap_etc_record cer ON cer.id = ( SELECT id FROM cap_etc_record r WHERE r.etc_id = ce.id ORDER BY r.use_time DESC LIMIT 1 )

至此,这个问题就解决了。


http://chatgpt.dhexx.cn/article/yuu9yLQO.shtml

相关文章

左联右联内联

left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。 right join (右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。 inner join (等值连接或者叫内连接…

uniapp使用scroll-view实现菜单的左联右和右联左

左联右 <!-- 左 菜品分类--><view class"order-left"><scroll-view scroll-y"true" class"scroll-Hei" :scroll-with-animation"true" :enhanced"true":show-scrollbar"false"><block v-fo…

join操作-内联,左外联,右外联,交叉联,全联

在数据库中新建三张表格&#xff1a; T1 T2 T3 普通查询&#xff1a; select * from T1, T3 where T1.user_id T3.user_id 结果&#xff1a; --------------------------------------------------------------- join就是把两张表格等效当做一张表来查 内联(inner join)&a…

mysql的左联、右联、内联查询

内联查询&#xff1a;where会作用到两张表 左联查询&#xff1a;where作用在右表&#xff0c;左表全部数据都会被检索出来&#xff0c;右表只有满足where里面条件的才会被检索出来 右联查询&#xff1a;where作用在左表&#xff0c;右表全部数据都会被检索出来&#xff0c;左表…

SQL关联查询(左联,右联,内联,外联,自关联)

在使用数据库查询语句时&#xff0c;单表的查询有时候不能满足项目的业务需求&#xff0c;在项目开发过程中&#xff0c;有很多需求都是要涉及到多表的连接查询&#xff0c;总结一下mysql中的多表关联查询 一&#xff0c;内连接查询 是指所有查询出的结果都是能够在连接的表中…

SQL中,表之间的左联和右联是什么意思

首先来看张图片&#xff1a; 定义&#xff1a; 左联&#xff1a;首先取出A表中所有数据&#xff0c;然后再加上A、B表通过关联字段key查询到的数据 右联&#xff1a;首先取出B表中所有数据&#xff0c;然后再加上A、B表通过关联字段key查询到的数据 内联&#xff1a;查询A、…

数据库内联、左联和外联的区别

INNER JOIN&#xff08;内联&#xff09;&#xff1a;两个表a,b 相连接&#xff0c;取出符合连接条件的数据&#xff0c;数据集C LEFT JOIN&#xff08;左联&#xff09;&#xff1a;先返回左表的所有行&#xff0c;再加上符合连接条件的匹配行&#xff0c;数据集A1数据集C R…

RDD、矩阵基础——3. 矩阵、向量(Breeze、BLAS)

MLlib库底层的Vector&#xff08;向量&#xff09;、Matrix&#xff08;矩阵&#xff09;运算使用了 Breeze库和BLAS库。 Breeze库提供了相应计算的接口&#xff08;Linalg&#xff09;。 但是在MLlib里面同时也提供了Vector和Linalg等的实现。 BLAS&#xff08;线性代数运…

WARNING (theano.tensor.blas): Using NumPy C-API based implementation for BLAS functions.

&#xff08;WARNING : Using NumPy C-API based implementation for BLAS functions&#xff09;的解决方案 情况说明问题的解决第一步&#xff1a;使用CMD安装类库第二步&#xff1a;在用户目录下放置一个文件 验证 情况说明 再训练生成对抗网络GAN时&#xff0c;需要Pylear…

BLAS之GEMM和GEMV

BLAS简介 BLAS全称是Basic Linear Algebra Subprograms是规定了一套低级的执行常见线性代数操作的规范。其实现经常针对特殊的机器进行优化&#xff0c;比较著名的BLAS库有ACML, ATLAS, MKL, OpenBLAS。许多常见的数值软件均采用兼容BLAS规范的实现库来进行线性代数计算&#…

linux编译blas,科学网—Linux下安装blas和lapack包小记 - 徐博伦的博文

系统是centOS6.5&#xff0c;机器上已有gfortran编译器 从网上搜索下载blas、cblas、lapack的tar压缩文件包 1.编译blas 先解压文件 tar xvf blas.tgz cd blas #blas的解压文件夹 gfortran -c -O3 *.f #编译生成.o执行文件 ar rv libblas.a *.o #链接所有的 .o文件&#xff0…

BLAS学习

导师突然通知要开始关于blas的讨论班&#xff0c;之前甚至都没听说过blas这个词&#xff0c;又要开始新一波的锤炼小白之路了… 1. BLAS简介 首先BLAS的全称是 Basic Linear Algebra Subprograms&#xff0c;即 基础线性代数子程序库&#xff0c;其中包含了一系列基本的线性代…

android 您的手机上未安装应用程序的解决方法

android 创建桌面快捷方式的时候设置应用名称和图标是完全没有问题&#xff0c;但是点击快捷方式的时候出现“您的手机上未安装应用程序“&#xff0c;这是快捷方式的执行目标设置错误&#xff0c;也就是启动Activity。有些应用的启动Activity是欢迎界面&#xff0c;创建快捷方…

android显示应用程序未安装,如何解决安卓系统显示应用程序未安装

我们在安装软件的时候经常会遇到应用程序未安装这个问题&#xff0c;尤其是在更新软件或者是从ROM提取出来的软件会出现这样的问题。那我们该如何处理这个问题呢&#xff1f;下面我就为大家列举几个解决这种问题的办法。 产生应用程序未安装的原因 软件签名不一致。这种情况一般…

什么是android应用程序未安装,应用程序未安装,教您安卓系统应用程序未安装怎么解决...

大家在使用智能手机的时候&#xff0c;尤其是安卓系统的手机&#xff0c;在安装应用程序&#xff0c;也就是App的时候&#xff0c;有时会提示“应用程序未安装”&#xff0c;相信很多使用安卓机器的朋友都曾遇到过“应用程序未安装”的问题&#xff0c;但是懂得解决的用户并不多…

android studio AVD模拟器安装某些app出现 “app not installed(未安装应用程序)”的问题

android studio AVD模拟器安装某些app出现 “app not installed(未安装应用程序)”的问题 参考&#xff1a; 安装apk时出现INSTALL_FAILED_NO_MATCHING_ABIS&#xff1f;Android 开发之 INSTALL_FAILED 汇集表 问题说明 在为安卓模拟器中android 11版本的系统安装一些常用软…

一加5应用未安装怎么解决_应用程序未安装怎么解决 手机提示应用程序未安装解决办法...

安卓手机系统的应用繁多&#xff0c;丰富人们使用体验的同时&#xff0c;有时候还会出现种种问题&#xff0c;比如安装提示“应用程序未安装”&#xff0c;那么&#xff0c;遇见这个问题应该怎么处理呢&#xff1f;请阅读本文教程&#xff01; 手机提示应用程序未安装解决办法 …

android开发下载安装app提示未安装应用

出现的情况是通过usb可以安装&#xff0c;然后用androidStudio运行生成的apk,发送出去&#xff0c;下载安装&#xff0c;提示未安装应用: 问题如图: 解决过程:在百度上看一些方案,不一致呢,问了问别人,通过正确的打包方式打包试一下,尝试过在AndroidStudio通过Build,然后Build…

什么是android应用程序未安装,显示“应用程序未安装”是怎么回事?程序未安装的解决图文步骤...

安卓手机安装应用的时候&#xff0c;有时候会莫名其妙无法安装……明明存储空间够的啊摔!经过搜索和尝试&#xff0c;本人找到一种可行的方法&#xff0c;下面分享给大家。目前看来&#xff0c;这是部分系统内的bug&#xff0c;下面&#xff0c;小编跟大家介绍安卓系统应用程序…

Andorid手机安装apk文件,提示应用未安装

项目场景&#xff1a;Andorid手机安装apk文件&#xff0c;提示应用未安装 通过Andorid studio打包生成的apk文件&#xff0c;在Andorid手机上安装时&#xff0c;提示应用未安装 安装apk文件到手机上&#xff0c;提示“应用未安装” 原因分析&#xff1a; 可能是手机上的Andor…