多个ORDER语句MySQL

时间:2014-08-06 21:27:42

标签: php mysql sql-order-by

是否可以在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

2 个答案:

答案 0 :(得分:3)

最好的方法是两个单独的陈述:

ORDER BY (CASE WHEN `column` = 0 THEN `table`.`id` END) DESC,
         (CASE WHEN `column` = 1 THEN `table`.`date` END) ASC

但是,如果column是数据中的列而不是常量,我不太确定你想要什么。通常iddate 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
相关问题