• MySQL解决group by分组后未排序问题


    MySQL解决group by分组后未排序问题


    一、遇见问题

    当我们要实现SQL分组后取第一条数据则需要进行排序结果作为子查询后分组

    
    CREATE TABLE `op_joke` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `name1` varchar(255) DEFAULT NULL,
      `name2` varchar(255) DEFAULT NULL,
      `create_time` datetime DEFAULT NULL,
      PRIMARY KEY (`id`),
      UNIQUE KEY `index_push` (`name1`,`name2`) USING BTREE
    ) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8;
    
    
    INSERT INTO `test_yjdsns`.`op_joke` (`id`, `name1`, `name2`, `create_time`) VALUES (9, '我', NULL, '2022-10-01 15:14:22');
    INSERT INTO `test_yjdsns`.`op_joke` (`id`, `name1`, `name2`, `create_time`) VALUES (10, '我', NULL, '2022-11-01 15:14:22');
    INSERT INTO `test_yjdsns`.`op_joke` (`id`, `name1`, `name2`, `create_time`) VALUES (11, '你', NULL, NULL);
    INSERT INTO `test_yjdsns`.`op_joke` (`id`, `name1`, `name2`, `create_time`) VALUES (12, '你', NULL, NULL);
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在这里插入图片描述

    1、错误SQL

    在这里插入图片描述

    2、正确SQL

    语句中加个distinct就好了

    SELECT
    	t1.* 
    FROM
    	( SELECT DISTINCT * FROM op_joke ORDER BY create_time DESC ) t1 
    GROUP BY
    	t1.name1 
    ORDER BY
    	t1.id;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述
    究其原因应该是和mysql5.7添加的derived_merge 有关系

    • 有志者自有千计万计,无志者只感千难万难。
    • 不要皱眉,即使在伤心的时刻,因为你从不知道有谁会醉心于你的笑容。
    • 再长的路,一步步也能走完,再短的路,不迈开双脚也无法到达。
    • 所谓的成熟.其实就是在不断看开狠多事情之后.更好的生活着。
    • 努力不—定改变人生,但改变人生必须努力。
    • 前面的路还很远,你可能会哭,但是—定要走下去,一定不能停。
    • 愿你所得过少时,不会终日愤愤;愿你所得过多时,不必终日惶恐。
    • 人发展的历程就象爬山,每登上一个高度都能看到更远更美的风景!
    • 重新自己的生活,即使是—个人。
    • 请成为自己心中的那个理想的大人
    • 所谓努力,就是主动而有目的的活动。——村上春树
    • 生活在阴沟里,依然有仰望星空的权利。——王尔德
    • 正是这些平凡的人生,却构成了伟大的历史。
    • 失败的人只有一种,就是在抵达成功之前放弃的人。——盖聂《秦时明月》
    • 别让任何人毁灭了你的灵魂,你要让自己坚强,只为自己坚强。
  • 相关阅读:
    PIP安装本地离线包whl
    学习Uni-app开发小程序Day5
    springboot+jsp 农产品电子商城网站maven idea
    CloudQuery + StarRocks:打造高效、安全的数据库管控新模式
    二叉搜索树
    网络基本类型
    OpenCV中的边缘检测技术及实现
    云原生之Linux命名空间和docker容器隔离
    基于C语言实现的网络传输机制-支持 TCP 可靠数据传输
    提高 K8S 容器运行时的可观察性最佳方法之一
  • 原文地址:https://blog.csdn.net/weixin_46146718/article/details/127864413