Hope this question has not been ask already. My problem is :
Do you know how to do something like that
x
ORDER BY
CASE
WHEN job = "jounalist" then 1, date desc
WHEN job = "teacher" then 2, class asc
WHEN job = "dev" then 3, code asc
ELSE 4
Advertisement
Answer
You need separate case
expressions. I’m not sure what 1
, 2
, and 3
represent. Let me assume they are meant to put the results in the order of the CASE
expressions:
ORDER BY (CASE WHEN job = 'journalist' THEN 1
WHEN job = 'teacher' THEN 2
WHEN job = 'dev' THEN 3
ELSE 4
END),
(CASE WHEN job = 'journalist' THEN date END) DESC,
(CASE WHEN job = 'teacher' THEN class END),
(CASE WHEN job = 'code' THEN code END)
A CASE
expression returns a single type. For this purpose, I don’t recommend converting values to a single type. Instead, just use separate keys in the ORDER BY
for the different groups.
I should also point out that some databases might have special functionality that would simplify some of this code.