MySQL查询 数据归并(根据字段a进行归并,a字段的值相同的,取b字段最大的数据行)
2023-09-27 14:29:10 时间
像帮助过我的师姐致以诚挚的问候:《夜归客》-- 黑龙江·绥化
测试开始:
创建表:
# 创建表
create table sql_test(id int primary key not null auto_increment, name_id varchar(128), count int(11), version varchar(128), create_time datetime);
修改了表结构:
# 想到MySQL表字段只有timestamp类型才可以设置默认值,于是修改表字段
alter table sql_test modify create_time timestamp default now();
表结构如下:
插入测试数据
# 插入一条测试数据
#insert into sql_test(name_id, count, version) values('092001', '4', '20190918');
# 批量插入3条测试数据
#insert into sql_test(name_id, count, version) values('092002', '3', '20190919'), ('092003', '2', '20190919'), ('092004', '1', '20190920');
# 分别插入数据保证4条数据的创建时间不要一致
insert into sql_test(name_id, count, version) values('092001', '4', '20190918');
insert into sql_test(name_id, count, version) values('092002', '3', '20190919');
insert into sql_test(name_id, count, version) values('092003', '2', '20190919');
insert into sql_test(name_id, count, version) values('092004', '1', '20190920');
如下:
查询:
# 归并查询规则:根据version进行归并,version字段的值相同的,取时间最新的数据行
select a.* from sql_test a where (a.version, a.create_time) in (select version, max(create_time) from sql_test group by version);
容易读懂的写法:
select sql_test.* from sql_test where (version, create_time) in (select version, max(create_time) from sql_test group by version);
查询结果如下:
后记:
如果写原生SQL比较困难,实在些不出来,可以在MySQL查询返回所有结果,然后单独写一个函数,对数据进行筛选处理。
总结:
# table_name可省略
select * from sql_test; == select sql_test.* from sql_test;
# as可省略
select name_id as NAMEID from sql_test; == select name_id NAMEID from sql_test;
sql也可以这么写,一个元组在另一个元组中存在:
相关文章
- mysql中,mediunmtext字段类型用来存储什么类型的数据?最大存储多少数据?
- mysql处理海量数据时的一些优化查询速度方法
- MySQL查询某天的数据
- MYSQL 查询重复数据
- MySQL分布值很少的字段要不要加索引
- mysql随机查询若干条数据的方法
- 关于Mysql 查询所有表的实时记录用于对比2个MySQL 库的数据是否异步
- 数据集成通过JDBC将数据导入MySQL的几种模式
- MySQL查询当天昨天明天本月上月今年等数据
- 【常用SQL】MySQL查询重复的数据
- 发现个工具,查询Mongo数据使用mysql语法
- mysql 查询中文数据
- mysql数据查询 4.分组查询
- mysql数据查询 3.聚合查询
- mysql数据查询 2.条件查询
- mysql数据查询 1.查询基础
- mysql基础 4.数据的基本操作
- hibernate利用mysql的自增张id属性实现自增长id和手动赋值id并存
- 解决kettle在两个mysql之间迁移数据时乱码的问题 和 相关报错 及参数调整, 速度优化
- Mysql 查询上周的数据,Mysql查询本周的数据
- mysql插入数据显示:Incorrect datetime value: '0000-00-00 00:00:00' 错误的处理
- 中国行政区划表,包括34个省、直辖市的所有数据 mysql数据
- mysql多表关联查询进行数据修改举例
- mysql 分区处理数据
- 一步一步跟我学习hadoop(7)----hadoop连接mysql数据库运行数据读写数据库操作
- mysql 5.6 后热数据的加载
- window下Mysql 恢复Delete删除的数据
- mysql导入数据,涉及到时间转换,乱码问题解决
- mysql数据库全文多库多表查找,查询所有数据库中包含指定字符的数据
- MySQL数据分组Group By 和 Having
- 高性能 MySQL(八):通过优化数据访问,来解决慢查询
- [Mysql] BETWEEN...AND...过滤数据