带有多列的 ORDER BY 内的 CASE

Fil*_*uzi 2 sql database postgresql case sql-order-by

我想有条件地订购查询

ORDER BY 
CASE
WHEN TRUE THEN users.name, users.lastname END
Run Code Online (Sandbox Code Playgroud)

但它会引发语法错误syntax error near or at ","

下面的例子就像一个魅力

ORDER BY 
CASE
WHEN TRUE THEN users.name END
Run Code Online (Sandbox Code Playgroud)

我也试过

ORDER BY 
CASE
WHEN TRUE THEN "users.name, users.lastname" END
Run Code Online (Sandbox Code Playgroud)

这引发了"users.name, users.lastname"不存在

    ORDER BY 
CASE
WHEN TRUE THEN "users"."name", "users"."lastname" END
Run Code Online (Sandbox Code Playgroud)

这引起 syntax error at ","

如何在 ORDER BY 中的 CASE 中放置多个列?

Fil*_*uzi 5

您需要使用ROW 构造函数才能将几列组合在一起

ORDER BY 
CASE
WHEN TRUE THEN ROW(users.name, users.lastname) END
Run Code Online (Sandbox Code Playgroud)

如果里面有 1 个以上的值,ROW()您可以跳过ROW关键字。这是带有语法糖的较短版本:

ORDER BY 
CASE
WHEN TRUE THEN (users.name, users.lastname) END
Run Code Online (Sandbox Code Playgroud)