Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SQL Select Distinct Values, but order by a different value

Tags:

sql

distinct

I want to select all distinct order_ids from my table, and order that list by the date column. Using DISTINCT is of course a query-wide parameter, so trying something like this doesn't work:

SELECT DISTINCT(orderId, datetime) 
FROM table 
ORDER BY datetime DESC

This returns all DISTINCT combinations of the orderId and datetime, so I'm left with multiple orderIds, which I don't want. Therefore I'm thinking that the DISTINCT clause is not the way to go. Does anyone have any suggestions on how I could solve this problem?

Thanks!

like image 345
Erebus Avatar asked Nov 23 '09 19:11

Erebus


2 Answers

If there are multiple rows for the order, which date do you want to show? perhaps:

SELECT [orderId], MAX([datetime])
FROM [table]
GROUP BY [orderId]
ORDER BY MAX([datetime]) DESC
like image 125
Marc Gravell Avatar answered Sep 28 '22 17:09

Marc Gravell


Perhaps a CTE would help:

WITH CTE
AS
(

SELECT orderId FROM table ORDER BY datetime DESC

)

SELECT DISTINCT orderId  FROM CTE
like image 29
unclepaul84 Avatar answered Sep 28 '22 17:09

unclepaul84