MySQL,获取每两列对的最新值

时间:2020-05-27 15:02:16

标签: mysql

这是一个简单的表

table

我只想返回item_key和category_key唯一的一对creation_date

在这种情况下,请求应返回第1、3、4行。 1、3(因为这是唯一的一对)和4(因为该行是[[titi]和3]的最新对,然后是第3行

这是我的预期结果:

result

我使用mysql 5.7数据库。

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

您没有提到要使用哪个版本的MySQL,因此我假设它是现代版本(MySQL 8.x)。

您可以使用ROW_NUMBER()函数,如下所示:

select *
from (
  select *,
    row_number() over(partition by item_key, category_key 
                      order by creation_date desc) as rn
  from t
) x
where rn = 1

针对MySQL 5.x的编辑

在MySQL 5.x中,您可以执行以下操作:

select *
from t
where (item_key, category_key, creation_date) in (
  select item_key, category_key, max(creation_date)
  from t
  group by item_key, category_key
)

答案 1 :(得分:0)

您最多可以使用分组方式

unsat