首页 > 数据库 >mysql left join 查询右表的最新记录

mysql left join 查询右表的最新记录

时间:2024-05-23 14:29:02浏览次数:24  
标签:join t4 t2 t3 t1 右表 mysql id SELECT

left join 关联查询右表多条记录只保留最新的一条,可以通过max+group by实现

sql如下:

SELECT
    t1.*,
    t4.maxEndDate ,
    t4.Q_STANDARD,
    t4.COAL_CLAS
FROM
    pub_item_unit_info t1
    LEFT JOIN (
    SELECT
        t3.id,
        t3.INDEX_CODE,
        t3.maxEndDate,
        t3.Q_STANDARD,
        t3.COAL_CLAS
    FROM
        (
        SELECT
            t2.id AS id,
            t2.INDEX_CODE,
            max( t2.END_DATE ) AS maxEndDate ,
            t2.Q_STANDARD,
            t2.COAL_CLAS
        FROM
            tb_item_coal_price_mine t2 
        GROUP BY
            t2.INDEX_CODE 
        ) t3
    ) t4 ON t1.index_code = t4.INDEX_CODE
where t1.index_code='10021506220105'

说明:t1表与t2表通过index_code进行关联,t2表取end_date最新的一条记录,注意group by后面必须是index_code(即t1表与t2表关联的字段),否则无法查询出右表最新的一条记录,而是多条记录。

网上找到的sql如下:

SELECT
    `t1`.`id` AS `id`,
    `t1`.`keytasks` AS `keytasks`,
    `t1`.`content` AS `content`,
    `t1`.`company` AS `company`,
    `t1`.`achievegoal` AS `achievegoal`,
    `t1`.`setime` AS `setime`,
    `t4`.`createtime` AS `createtime` 
FROM
    `paastest`.`task_supervision` `t1`
    LEFT JOIN (
    SELECT
        `t3`.`id` AS `id`,
        `t3`.`supervisionid` AS `supervisionid`,
        `t3`.`createtime` AS `createtime` 
    FROM
        (
        SELECT
            `t2`.`id` AS `id`,
            `t2`.`supervisionid` AS `supervisionid`,
            max( `t2`.`createtime` ) AS `createtime` 
        FROM
            `paastest`.`task_supervision_child` `t2` 
        GROUP BY
            `t2`.`supervisionid` 
        ) `t3` 
    ) t4 ON `t1`.`id` = `t4`.`supervisionid`

 

标签:join,t4,t2,t3,t1,右表,mysql,id,SELECT
From: https://www.cnblogs.com/zwh0910/p/18208407

相关文章

  • spring cloud 部署 Centos8 离线环境搭建 一 mysql
    在联网的机器下载到/optyuminstall--downloadonly--downloaddir=/optgccgcc-c++automakeautoconflibtoolmake安装服务器上传到/opt执行安装rpm-Uvh*.rpm--nodeps--force下载mysql上传到安装服务器/opthttps://downloads.mysql.com/archives/community/m......
  • MySQL 跳过同步错误
    MySQL跳过同步错误方法1、手动设置动态参数sql_slave_skip_counterstopslavesql_thread;setglobalsql_slave_skip_counter=1;startslavesql_thread;2、静态服务器设置,需要重启MySQL[mysqld]slave_skip_errors=1032,1064,1062重启MySQL之后,会自动加载配置文件,同步自动跳......
  • MySQL的自增ID连续性控制变量innodb_autoinc_lock_mode
    查看innodb_autoinc_lock_mode的值在MySQL命令行客户端中使用“SHOWVARIABLES”查看:MySQL[mydb]>SHOWVARIABLESLIKE'innodb_autoinc_lock_mode';+--------------------------+-------+|Variable_name|Value|+--------------------------+-------+|......
  • Mysql datetime类型精度问题
    问题描述:汇报表中有2个日期字段,字段名分别为startTime和endTime,都为datetime类型,类型长度默认为0,endTime在保存的格式为:2024-05-2323:59:59.999在测试环境中保存没有出现精度问题,查询后正常显示为2024-05-23 23:59:59,正式环境下日期出现了近位,变为2024-05-2400:00:......
  • MySql常用命令
    索引服务相关库表相关导入导出索引相关用户相关编码相关函数相关一、服务相关servicemysqldstatus是否启动/安装服务servicemysqldstart启动服务servicemysqldstop停止服务mysql-uroot-p123456连接服务mysql-P3306-uroot-p12345......
  • MySQL、SQL Server、Oracle对比,你必须了解的三大数据库区别
    MySQL、SQLServer、Oracle对比,你必须了解的三大数据库区别一、MySQL优点:体积小、速度快、总体拥有成本低,开源;支持多种操作系统;是开源数据库,提供的接口支持多种语言连接操作;MySQL的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的......
  • MySQL 之 约束 (主键、唯一、非空、自增、外键)
    MySQL之约束(主键、唯一、非空、自增、外键)目的:使得数据更准确,更完整。约束的分类:1、键约束(1)主键约束(2)唯一键约束(3)外键约束2、非空约束3、默认值约束4、自增约束主键约束(一)概述1、关键字:primarykey2、特点:增加主键约束的列(字段)的值必须是非空+唯一的,一个表只有......
  • 分布式任务调度内的 MySQL 分页查询优化 等值在前,排序在中间,范围在最后
    分布式任务调度内的MySQL分页查询优化https://mp.weixin.qq.com/s/VhSzxYIRv83T3D3JD4cORg三、优化方案 3.1优化方案确定 当前SQL执行计划以主键进行顺序遍历,是一个范围扫描,有点像在一片很大的居民区按照序号挨家挨户寻找一些特定的人一样,比较简单也比较低效。 既然......
  • win11安装MySQL
    目录[-]1. 1.下载2. 2.安装 参考文档:https://dev.mysql.com/doc/refman/8.4/en/ 1.下载    mysql官网下载msi安装程序:https://dev.mysql.com/downloads/file/?id=526927 2.安装    运行下载的mis程序,逐步安装。安装模式: complete;  ......
  • MySQL 5.7 InnoDB官方文档中锁的八个分类概述自译
    官方文档描述InnoDB使用的锁的八个分类共享锁(SharedLocks)和排它锁(ExclusiveLocks)InnoDB实现了两种标准的行级别锁,分别是共享锁(又称S锁)和排它锁(又称X锁)。一个共享锁允许持有它的事务去读取某行数据。一个排它锁允许持有它的事务去更新或删除某行数据。如果事务T1持有......