Mysql, получить самые последние значения каждой пары из 2 столбцов - PullRequest
0 голосов
/ 27 мая 2020

Вот простая таблица

table

Я хотел бы вернуть только самые свежие по дате создания) уникальная пара item_key и category_key

В этом случае запрос должен возвращать строку 1,3,4. 1, 3, потому что это уникальная пара, и 4, потому что строка является самой последней парой ["titi" и 3], тогда строка 3

здесь мой ожидаемый результат:

result

Я использую базу данных mysql 5.7.

Спасибо за вашу помощь

Ответы [ 2 ]

2 голосов
/ 27 мая 2020

Вы не указываете, какую версию 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
)
0 голосов
/ 27 мая 2020

Вы можете использовать группу не более

SELECT MAX(`creation_date`), `item_key`, `category_key`, `the_value`
FROM `table`
GROUP BY `item_key`, `category_key`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...