У меня есть таблица заказов. Каждый заказ связан с одним или несколькими элементами корзины.Как получить последние 5 уникальных идентификаторов продукта?
Базовый код:
SELECT * FROM Orders o JOIN OrderItems oi ON o.OrderNumber = oi.OrderNumber
Я могу ограничить последние 5 пунктов, делая это:
ORDER BY oi.CreatedDate DESC LIMIT 5
Однако, в некоторых случаях пользователя разместил несколько заказов через одни и те же продукты. например
OrderNo ItemNo ProductId
1 1 70
1 2 20
2 1 80
2 2 30
3 1 10
4 1 90
5 1 10
6 1 40
7 1 50
8 1 100
9 1 10
10 1 30
11 1 10
12 1 60
Если я получаю последние пять пунктов, я бы в конечном итоге с 60, 10, 30, 10, 100. То, что я на самом деле хочу, чтобы получить последние 5 уникальных идентификаторов продуктов - так, что бы 60, 10, 30, 100, 50. Каким будет SQL для этого?
Отредактировано
Если я использую GROUP BY я получаю 60, 100, 50, 40, 90. Где 30?
проблема заключается в том, что 'GROUP BY' каким-то образом выполняется перед' ORDER BY' происходит. – vulkanino
см. Мои изменения в ответе. – vulkanino