如何按多列排序,而不是按值排序?

时间:2011-07-28 09:57:06

标签: mysql sql-order-by

问题标题可能有点模糊,所以请随意将其更改为更有意义的内容,我找不到正确的单词。

所以这是我的问题:

在我的表中有2个重要的列

  • date_added(日期时间值)
  • special_price(数字)

special_price是NULL或数值,具体取决于特价。

我将描述我现在想要订购结果的方式:

首先,我想查看没有按日期排序的所有项目(NULL)(最新的第一个),然后我想查看具有special_price的项目(除了{{1}之外的其他内容按日期排序。

起初我试过这个:

NULL

这对于第一部分来说非常有用,其中所有的special_price值都在SELECT * FROM products ORDER BY special_price, date_added DESC ,但是当它开始时,对于在special_price列中的值上有特定排序的项目。这当然有道理,因为在查询中我想先通过special_price订购。

那么我怎样才能让查询忽略special_price的值,看看它是否NULL?因此,我按日期排序所有NULL,然后按日期排序NULL

2 个答案:

答案 0 :(得分:6)

ORDER BY IF( ISNULL( special_price ), 0, 1 ), date_added DESC

答案 1 :(得分:2)

我用

SELECT *, IF(special_price IS NULL, 0, 1) AS orderer FROM products ORDER BY orderer, date_added DESC

适用于您想要完成的任务