mysql 分组依据和最大值

标签 mysql group-by max greatest-n-per-group

我在 mysql 中有这个表:

+----+------+------------+-------+
| id | code |    date    | value |
+----+------+------------+-------+
| 1  |   3  | 2016-01-01 |   3   |
| 2  |   3  | 2016-01-02 |   4   |
| 3  |   3  | 2016-03-01 |   6   |
| 4  |   3  | 2016-06-06 |   5   |
| 5  |   8  | 2016-01-01 |   1   |
| 6  |   8  | 2016-09-09 |   3   |
+----+------+------------+-------+

我想返回这样的表格:

+------+------------+-------+
| code |    date    | value |
+------+------------+-------+
|  3   | 2016-06-06 |   5   |
|  8   | 2016-09-09 |   3   |
+------+------------+-------+

我的服务器设置是:

**MySQL**
Server: localhost via TCP/IP
Server version: 5.5.16
Protocol version: 10
User: root@localhost
MySQL charset: UTF-8 Unicode (utf8)

**Web server**
Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8
MySQL client version: mysqlnd 5.0.8-dev - 20102224 - $Revision: 310735 $

我尝试了这个脚本但不起作用:

SELECT *
FROM tbl_mysql
WHERE date IN (SELECT MAX(date) FROM tbl_mysql GROUP BY code)

如何更改脚本以在我的服务器版本上运行? 谢谢!

最佳答案

您可以申请自加入;

select t1.* from table1 t1 inner join 
(select code,max(date) maxDate from table1 group by code) t2
ON t1.code = t2.code and t1.date = t2.maxDate

Demo

关于mysql 分组依据和最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48349466/

相关文章:

php - 如何对行求和然后减去分组依据?

ruby-on-rails - 如何找到查询结果的大小

sql - 如何在SQL Server中为group by构造索引

c - 创建代码打印 3 个数字之间的最大值时出现问题

mysql - 如何从mysql查询中提取日期和时间部分

php - 在 mysql 查询中使用 php 表单多选

sql - 此 SQL 选择代码是否遵循良好实践?

javascript - 具有多种输入类型的自动完成功能,动态插入

sql - max()、分组依据和排序依据

SQL Server : UPDATE statement where MAX query