美文网首页
子查询-分组查询最新一条记录

子查询-分组查询最新一条记录

作者: crishawy | 来源:发表于2018-10-12 17:08 被阅读0次

表结构

image.png
image.png
说明:user表存储学生基本信息,plan表存储学生计划信息,其中一个学生可以存储多个计划,plan表中optime字段表示学生操作时间

需求

根据某一实验室id查询属于该实验室的所有学生的最新一条计划

分析

本次查询可以分解为3个子查询

  • 根据实验室id查询所有属于该实验室的学生列表
  • 根据学生id查询属于该学生的所有计划列表
  • 筛选出每个学生所有计划列表中的最新一条

sql语句

SELECT
    *
FROM
    (
        SELECT DISTINCT
            pms_plan.id AS plan_id,
            pms_plan.title,
            pms_plan.status1,
            pms_plan.status2,
            pms_plan.`status`,
            pms_plan.created,
            pms_plan.expired,
            pms_plan.optime,
            pms_user_stu.id AS stu_id,
            pms_user_stu.nickname,
            pms_user_stu.created AS enroll_date
        FROM
            pms_user_stu
        LEFT JOIN pms_plan ON pms_user_stu.id = pms_plan.stu_id
        WHERE
            pms_user_stu.exp_id = 63
        ORDER BY
            pms_plan.optime DESC
    ) as m
GROUP BY
    m.stu_id

本次查询使用了内联子查询,子查询内部使用关联查询出所有学生的所有计划列表(可以单独运行观察),将子查询的结果(表)作为新的数据源,此时该数据源相当于一个新表,使用GROUP BY语句进行分组取每个分组第一条记录,每个分组使用ORDER BY ...DESC语句进行降序排列,便实现了联合两表查询不同分组最新的一条记录。

结果

image.png

相关文章

  • MongoDB分组查询

    分组查询示例 分组获取最新的一条记录

  • 子查询-分组查询最新一条记录

    表结构 需求 根据某一实验室id查询属于该实验室的所有学生的最新一条计划 分析 本次查询可以分解为3个子查询 根据...

  • Oracle分组查询

    分组查询,且只取每一组内的一条最新的记录 需求:查询 code 为a,b,c且在有效时间段内的每个code最新的一...

  • java基础-day31-数据库2.0

    7.7 分组查询 7.8 分组过滤查询 7.9 限定查询 7.10 基本查询总结 7.11 子查询 7.11.1 ...

  • MySQL——分组函数、distinct、分组查询、连接查询、子

    MySQL——分组函数、distinct、分组查询、连接查询、子查询 一、分组函数(聚合函数)1、 会自动忽略空值...

  • SQL查询语句1

    复杂查询 = 简单查询 + 限定查询 + 查询排序 + 多表查询 + 分组统计查询 + 子查询。 面对所有的复杂查...

  • 数据库查询语句

    条件与逻辑查询 模糊查询 范围查询 排序 聚合函数 分组 连接查询 分页 子查询

  • MySQL03

    DQL查询语句 分页查询 分组函数 分组查询 子查询 多表连接查询 1、分页查询 当数据库中数据过多时,不能一次全...

  • mysql5.7版本关于使用derived table 分组查询

    常见错误:分组查询取每组最新的数据

  • MySQL 13-16章实操

    第十三章 分组数据 创建分组 过滤分组 分组和排序 第十四章 使用子查询 作为计算字段使用子查询 第十五章 联结表...

网友评论

      本文标题:子查询-分组查询最新一条记录

      本文链接:https://www.haomeiwen.com/subject/higoaftx.html