我有两列product_id
,r_store_id
,其中有几行具有相同的值。其余列行具有不同的值
我有相同的r_store_id
和product_id
的重复行,因为每次我必须在此表中添加新条目。我想要带有最新update_dt
的唯一行列表
(参见下面的DB表)。
id | m_store_id |r_store_id|product_id | amount |update_dt |
1 | 4 | 1 | 45 | 10 |18/03/5 |
2 | 4 | 1 | 45 | 100 |18/03/9 |
3 | 4 | 1 | 45 | 20 |18/03/4 |
4 | 5 | 2 | 49 | 10 |18/03/8 |
5 | 5 | 2 | 49 | 60 |18/03/2 |
6 | 9 | 3 | 45 | 19 |18/03/5 |
7 | 9 | 3 | 45 | 56 |18/03/3 |
我的结果应如下所示:
id | m_store_id |r_store_id|product_id | amount |update_dt |
2 | 7 | 1 | 45 | 100 |18/03/9 |
4 | 5 | 2 | 49 | 10 |18/03/8 |
6 | 9 | 3 | 45 | 19 |18/03/5 |
我想把这个结果放在这样的列表中:
List<Sales> salesList = (List<Sales>) query.list();
我无法找到一个简单的解决方案。请帮帮我!
答案 0 :(得分:1)
我们可以为每个商店选择按时间顺序排列的最新更新,然后加入以获取所有变量:
select a.*
from mytable a
join (select m_store_id, r_store_id, product_id, max(update_dt) as maxdate
from mytable
group by 1,2,3) b
on a.m_store_id=b.m_store_id
and a.r_store_id=b.r_store_id
and a.product_id=b.product_id
and a.update_dt = b.maxdate;