数据库
首页 > 数据库> > 如何在MySQL中使用条件ORDER BY?

如何在MySQL中使用条件ORDER BY?

作者:互联网

我有桌面课程,我们有一些字段,还有字段课程(字符串),收藏(bool),favoritedDate(dateTime),dateUpload.

教师上传课程,该日期存储在dateUpload字段中.如果教师将此课程标记为收藏此信息,则该字段中的数字1是收藏的,并且标记的日期存储在字段favoritedDate中.

现在我需要从特定教师​​检索所有课程,然后按日期排序列表:如果课程被标记为favited = 1应按favoritedDate,dateUpload desc排序,如果favorited = 0,则只能通过dateUpload desc进行排序.

这是我到目前为止,但它没有工作:

SELECT * from courses where teacherId = 23 
ORDER BY 
  CASE favorited WHEN 1 THEN favoritedDate, dateUpload
    else dateUpload
  END
  DESC
;

知道怎么解决这个问题吗?

解决方法:

case表达式返回原子值,因此您无法返回:

favoritedDate, dateUpload

我想这会做你想要的:

ORDER BY
    CASE favorited WHEN 1 THEN favoritedDate 
                          ELSE dateUpload 
    END DESC, dateUpload

标签:mysql,condition,order-by
来源: https://codeday.me/bug/20190806/1595991.html