😀 这里写文章的前言: 记录不同篇章数据库的一些奇怪操作的SQL语句;会持续的记录
📝 MySql篇章 去重排序后的SQL 简单的一个明细表
CREATE TABLE `t_directory_browse_detail_info` ( `id` bigint (20 ) NOT NULL AUTO_INCREMENT COMMENT '主键id' , `user_id` bigint (20 ) DEFAULT NULL COMMENT '用户id' , `dept_id` bigint (20 ) DEFAULT NULL COMMENT '租户id' , `type_id` bigint (20 ) DEFAULT NULL COMMENT '类型id' , `type_number` varchar (50 ) DEFAULT NULL COMMENT '类型对应的number编码' , `type_value` varchar (32 ) DEFAULT NULL COMMENT '类型type' , `browse_count` bigint (20 ) DEFAULT NULL COMMENT '浏览次数' , `create_by` bigint (20 ) DEFAULT NULL COMMENT '创建人id' , `update_by` bigint (20 ) DEFAULT NULL COMMENT '更新人id' , `create_time` datetime DEFAULT NULL COMMENT '创建时间' , `update_time` datetime DEFAULT NULL COMMENT '修改时间' , PRIMARY KEY (`id`) ) ENGINE= InnoDB AUTO_INCREMENT= 81 DEFAULT CHARSET= utf8 COMMENT= '浏览表明细表'
Q1: 根据type_number,type_value去重取最新的数据,并且根据update_time排序取最新的 错误SQL编写1: 可以看到提示的信息
Expression #1 of ORDER BY clause is not in SELECT list, references column ‘t_directory_browse_detail_info.update_time’ which is not in SELECT list; this is incompatible with DISTINCT
SELECT DISTINCT type_id,type_value from t_directory_browse_detail_info order by update_time desc ;
错误SQL编写2:我们先排序出一张表,然后根据这张表去做去重处理 问题: 你会发现查询出来的数据不是你想要的数据
SELECT DISTINCT type_id,type_value from ( SELECT type_id,type_value from t_directory_browse_detail_info order by update_time desc ) a
正确SQL1:采用分组,然后取最大的update_time或者取最大的id的值
SELECT type_id as typeId , type_value as typeValue from t_directory_browse_detail_info group by type_id, type_value order by max (id) desc
🤗 总结归纳 📎 参考文章
💡 有关文章的问题,欢迎您在底部评论区留言,一起交流~