Colderleo's blog Colderleo's blog
首页
Linux
C++
Python
前端
工具软件
mysql
索引
关于
GitHub (opens new window)

Colder Leo

热爱代码的打工人
首页
Linux
C++
Python
前端
工具软件
mysql
索引
关于
GitHub (opens new window)
  • binlog主从备份
  • binlog主从同步
  • 7和设置密码、访问权限
  • create database指定字符集
  • cnf 配置文件位置
  • mysql group by 分组后取最大值
  • mysql workbench社区版
  • select update
  • 7
  • 插入数据时忽略重复的key
  • 创建临时表
  • 入门学习
  • 索引的使用
  • 通过select插入
  • 性能优化-mysql全局设置
  • 修改字段顺序
  • 插入
  • mysql
gaoliu
2021-10-06

mysql group by 分组后取最大值

https://blog.csdn.net/ariczhou/article/details/48808417

题目:表A中有member_id 和 date 等字段,现在要按 member_id 分组,取分组后date最大的记录。

# 错误方法:

select * from table1 group by member_id order by date 
1

因为它是分组后取了组内的第一条数据(至于是第一条是哪一条就不一定了),取出来之后再order by date

# 正确方法一:子查询

select * from (select * from table1 order by date limit 10000000000) t1  group by member_id
1

这样就对了。子查询中的limit 10000000000是必须加的, 是因为mysql中某些版本中可能会做优化, 不加的话还是错误的结果。

# 正确方法二:join (可能更高效?)

select * from `table1` where EXISTS (  
    select `date` from (  
        SELECT max(`date`) as id FROM `table1` group by `member_id` limit 10) t   
    where t.`date`=`table1`.`date`  
)
1
2
3
4
5
编辑 (opens new window)
上次更新: 2021/10/11, 12:43:58
cnf 配置文件位置
mysql workbench社区版

← cnf 配置文件位置 mysql workbench社区版→

最近更新
01
通过模板实现结构体成员拷贝-按成员名匹配
05-07
02
c++17通过模板获取类成员的个数
05-01
03
avx-sse切换惩罚
04-30
更多文章>
Theme by Vdoing | Copyright © 2019-2023 Colder Leo | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×