Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CASE inside ORDER BY with multiple columns

I want to conditionally order a query

ORDER BY 
CASE
WHEN TRUE THEN users.name, users.lastname END

but it raises syntax error syntax error near or at ",".

Examle below works like a charm

ORDER BY 
CASE
WHEN TRUE THEN users.name END

I've also tried

ORDER BY 
CASE
WHEN TRUE THEN "users.name, users.lastname" END

which raises "users.name, users.lastname" does not exist

    ORDER BY 
CASE
WHEN TRUE THEN "users"."name", "users"."lastname" END

this raises syntax error at ","

how to put multiple columns inside CASE inside ORDER BY?

like image 785
Filip Bartuzi Avatar asked Jun 25 '26 15:06

Filip Bartuzi


1 Answers

You need to use ROW constructor in order to compose few columns together

ORDER BY 
CASE
WHEN TRUE THEN ROW(users.name, users.lastname) END

if there is more than 1 value inside ROW() you can skip ROW keyword. Here is shorter version with syntactic sugar:

ORDER BY 
CASE
WHEN TRUE THEN (users.name, users.lastname) END
like image 189
Filip Bartuzi Avatar answered Jun 28 '26 07:06

Filip Bartuzi



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!