MySQL 获取最后一次出现的重复行

标签 mysql

首先,我想向所有正在查看问题的人表示感谢,同时我也想说,总的来说,我对 SQL 确实很陌生。其次,我希望这不是一个重复的问题。我进行了很多搜索并尝试了很多,其他人试图完成但都失败了。

我试图获取与相同订单号匹配的行的最后一次出现。我尝试过在 id 和内部连接上使用 max() 进行分组,所以有些东西确实很奇怪。

有几次我接近的是当我获得最高的 id 时,但其余的与第一次出现匹配。

id | oldValue | newValue | orderNumber
--------------------------------------
1  | 123      | 345      | 12345
2  | 0        | 335      | 12345
3  | 234      | 235      | 34567
4  | 435      | 465      | 45678
5  | 543      | 1235     | 45678
6  | 543      | 578      | 45678
7  | 456      | 23464    | 12222
8  | 233      | 45765    | 14444
9  | 3456     | 6574     | 33345

输出的样子。

id | oldValue | newValue | orderNumber
--------------------------------------
2  | 0        | 335      | 12345
3  | 234      | 235      | 34567
6  | 543      | 578      | 45678
7  | 456      | 23464    | 12222
8  | 233      | 45765    | 14444
9  | 3456     | 6574     | 33345

我不想删除任何信息。我发现这是一个非常受欢迎的选择,对于我遇到的类似问题。我需要保留所有日期。

非常感谢任何有关如何解决此问题的想法,或者是我可以进行更多研究的资源。

最佳答案

您的问题可以通过一个简单的查询来解决:

select t.* 
from your_table t
join(
   select 
      max(id) as id
   from your_table
   group by orderNumber
) x on x.id = t.id

内部子查询仅返回每个 orderNumber 的最大 id。

关于MySQL 获取最后一次出现的重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30290197/

相关文章:

php - 如何管理分类站点中的多个城市?

MYSQL创建动态数据透视表

mysql - MySQL 中的 "Not unique table/alias"

MySQL 双左外连接

mysql - 使用 group by 和 sum 优化查询

mysql - 选择文章并仅在文章喜欢时选择文章喜欢时间(如果文章喜欢中有带 userID 的行)

php - 更新给定 SESSION 的信息

php - 这是什么编码?

java - NamedParameterJdbcTemplate 查询方法返回错误的整数值

php - MySQL UNION 不返回任何结果