Ordering returned rows according to a list
Hi all,
I'd like to make a single query that returns a number of rows using a
'WHERE id IN (<list-of-ids>)' condition, but I'd like the rows to be
returned in the order in which the ids are given in the list.
Is this possible?
Sebastian
Hi all,
I'd like to make a single query that returns a number of rows using a
'WHERE id IN (<list-of-ids>)' condition, but I'd like the rows to be
returned in the order in which the ids are given in the list.Is this possible?
Depending on how many IDs you have in your list, you can accomplish this
with a CASE statement:
SELECT *
FROM MYTABLE
WHERE id IN (6, 9, 3)
ORDER BY CASE id
WHEN 6 then 1
WHEN 9 then 2
WHEN 3 then 3 END
Quoth "Adam Rich" <adam.r@sbcglobal.net>:
I'd like to make a single query that returns a number of rows using a
'WHERE id IN (<list-of-ids>)' condition, but I'd like the rows to be
returned in the order in which the ids are given in the list.Depending on how many IDs you have in your list, you can accomplish this
with a CASE statement:SELECT *
FROM MYTABLE
WHERE id IN (6, 9, 3)
ORDER BY CASE id
WHEN 6 then 1
WHEN 9 then 2
WHEN 3 then 3 END
Thanks for this suggestion Adam.
You say "depending on how many IDs there are in the list". The query is
constructed programatically so unless there's a limit on the number of
conditions a CASE clause can handle, this is the way I'll go about it.
Sebastian