首先,我想对所有正在考虑问题的人表示感谢,并且说,我对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
我不想删除任何信息。我看到这是一个非常受欢迎的选择,对于我遇到的同样类型的问题。我需要保留所有日期。
对于如何解决这个问题的任何想法都非常感激,或者是我可以做更多研究的资源。
答案 0 :(得分:1)
您的问题可以通过简单的查询解决:
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。