首先,我想向所有正在查看问题的人表示感谢,同时我也想说,总的来说,我对 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/