CASE inside ORDER BY 多列
CASE inside ORDER BY with multiple columns
我想有条件地订购查询
ORDER BY
CASE
WHEN TRUE THEN users.name, users.lastname END
但它会引发语法错误 syntax error near or at ","
。
下面的例子很有魅力
ORDER BY
CASE
WHEN TRUE THEN users.name END
我也试过了
ORDER BY
CASE
WHEN TRUE THEN "users.name, users.lastname" END
引发 "users.name, users.lastname"
不存在
ORDER BY
CASE
WHEN TRUE THEN "users"."name", "users"."lastname" END
这会引发 syntax error at ","
如何在 ORDER BY 中的 CASE 中放置多个列?
只需使用两个case
表达式:
ORDER BY (CASE WHEN TRUE THEN users.name END),
(CASE WHEN TRUE THEN users.lastname END)
您需要使用 ROW constructor 才能将几列组合在一起
ORDER BY
CASE
WHEN TRUE THEN ROW(users.name, users.lastname) END
如果 ROW()
中的值超过 1 个,您可以跳过 ROW
关键字。这是带有语法糖的较短版本:
ORDER BY
CASE
WHEN TRUE THEN (users.name, users.lastname) END
我想有条件地订购查询
ORDER BY
CASE
WHEN TRUE THEN users.name, users.lastname END
但它会引发语法错误 syntax error near or at ","
。
下面的例子很有魅力
ORDER BY
CASE
WHEN TRUE THEN users.name END
我也试过了
ORDER BY
CASE
WHEN TRUE THEN "users.name, users.lastname" END
引发 "users.name, users.lastname"
不存在
ORDER BY
CASE
WHEN TRUE THEN "users"."name", "users"."lastname" END
这会引发 syntax error at ","
如何在 ORDER BY 中的 CASE 中放置多个列?
只需使用两个case
表达式:
ORDER BY (CASE WHEN TRUE THEN users.name END),
(CASE WHEN TRUE THEN users.lastname END)
您需要使用 ROW constructor 才能将几列组合在一起
ORDER BY
CASE
WHEN TRUE THEN ROW(users.name, users.lastname) END
如果 ROW()
中的值超过 1 个,您可以跳过 ROW
关键字。这是带有语法糖的较短版本:
ORDER BY
CASE
WHEN TRUE THEN (users.name, users.lastname) END