是否可以在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
答案 0 :(得分:3)
最好的方法是两个单独的陈述:
ORDER BY (CASE WHEN `column` = 0 THEN `table`.`id` END) DESC,
(CASE WHEN `column` = 1 THEN `table`.`date` END) ASC
但是,如果column
是数据中的列而不是常量,我不太确定你想要什么。通常id
和date
s不兼容。可能会出现在另一个之前。
答案 1 :(得分:1)
您错过了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