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

Pie*_*888 2 mysql sql-order-by

问题标题可能有点模糊,所以随意把它改成更有意义的东西,我找不到正确的单词.

所以这是我的问题:

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

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

special_price是一个NULL或一个数值,具体取决于特殊价格.

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

首先,我希望看到没有NULL按日期排序的所有项目(最新的第一个),然后我想查看NULL按日期排序的具有special_price(除此之外的任何东西)的项目.

起初我试过这个:

SELECT * FROM products ORDER BY special_price, date_added DESC
Run Code Online (Sandbox Code Playgroud)

这对于第一部分来说非常有用NULL,其中所有的special_price值都在哪里,但是当它开始时,对于在special_price列中的值上排序的特殊商品的商品而言.这当然有道理,因为在查询中我想先通过special_price订购.

那么我怎样才能让查询忽略special_price的值,看看它是否NULL存在?所以我NULL按日期排序,然后NOT NULL按日期排序.

nob*_*ody 6

ORDER BY IF( ISNULL( special_price ), 0, 1 ), date_added DESC
Run Code Online (Sandbox Code Playgroud)