我想有条件地命令查询

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

但它会引起语法错误syntax error near or at ","
下面的examle工作起来很有魅力
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 ","
如何将多个列按顺序放入case内部?

最佳答案

您需要使用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

关于sql - 在多列ORDER BY中使用CASE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39873677/

10-11 22:08
查看更多