是否有可能在MySQL中做这样的事情
if(`column` = 0) ORDER BY `id` DESC
if(`column` = 1) ORDER BY `date` ASC
这是我刚刚尝试的,但它不工作
SELECT
*
FROM
`table`
WHERE
1
ORDER BY
CASE `column` = 0 THEN `table`.`id` DESC,
CASE `column` = 1 THEN `table`.`date` ASC
最好的方法是使用两个单独的语句:
ORDER BY (CASE WHEN `column` = 0 THEN `table`.`id` END) DESC,
(CASE WHEN `column` = 1 THEN `table`.`date` END) ASC
但是,如果column
是数据中的一列而不是常量,我不太确定您想要什么。通常id
s和date
s是不兼容的。
您错过了WHEN
:
SELECT
*
FROM
`table`
WHERE
1
ORDER BY
CASE WHEN `column` = 0 THEN `table`.`id` DESC END,
CASE WHEN `column` = 1 THEN `table`.`date` ASC END