mysql - 如何在 MySQL 中根据条件对记录进行分组(group_by)

标签 mysql greatest-n-per-group

我有用户表,每个用户都有多条记录。我需要获取每个用户的最新插入记录。怎么可能用MySQL

用户表

id      name   value    updated_at

1       abc    123      2011-02-03
2       xyz    qwe      2011-04-03
3       abc    asd      2011-08-08
4       xyz    poi      2011-08-07

我的输出应该是

id      name   value    updated_at

3       abc    asd      2011-08-08
4       xyz    poi      2011-08-07

我使用了像这样的查询

 select id,name,value,updated_at  from users group by name having max(updated_at)

 select id,ep_name,position,max(updated_at)  from test1 group by ep_name having max(updated_at)

但是我没能得到想要的结果。我获得了 max(updated_at) 值但无法获得匹配的行。请帮忙

注意:这是否可以不使用子查询来完成。请帮忙

提前致谢

最佳答案

SELECT
  users.id,users.name, users.`value`, users.`updated_at`
FROM
  users
INNER JOIN
(
 SELECT name, MAX(updated_at) AS `updated_at`
 FROM
  users
 GROUP BY
  name
) max_users
ON
  users.name = max_users.name
AND
  users.updated_at = max_users.updated_at

Dan非常感谢... :) group by 中的小改动以匹配我的输出

关于mysql - 如何在 MySQL 中根据条件对记录进行分组(group_by),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7021723/

相关文章:

java - java中sql字符串中的MYSQL语法错误

mySQL查询: How to choose just one comment from post list?

sql - 使用左连接从两个表中选择最小值

mysql - 如何按天、月、年选择数据库行

mysql。左连接计数不起作用

php - Laravel 中的表关系

mysql - 数据库连接失败的 Magento 自定义错误页面

SQL 查询 : how to get users and their three latest posts?

mysql - SQL 仅选择列上具有最大值的行

sql - 查找每个策略每月的最后更新记录(另一个字段)