下面是我到目前为止的预览:
MySQL 表:
我想做的是能够以某种方式对其进行排序。我希望所有“免费”行都位于最顶部,因此 special_price 等于 0.00。
我还希望所有带有特价的行都在那之后,然后所有只有正常价格的行都在那之后。有什么方法可以在不指定 sort_id 的情况下做到这一点,这样用户就不必自己更改顺序了吗?
因此在上面的示例中,最后一个字段“测试”将向上移动一个,而“更换空气过滤器”将排在最后。
现在在我的查询中没有 ORDER BY,所以它是按 ID 排序的。
感谢任何帮助。谢谢!
最佳答案
ORDER BY COALESCE(special_price,99999) ASC, price ASC
应该可以解决问题。
解释
COALESCE
是一个采用第一个非空值的函数,因此在您有空特价的任何地方,它将默认为 99999
(只是一些任意高数在订购结束时获得它)。我们从那里按价格排序,因此任何关系以及列表的末尾都将按价格升序排列。
关于php - MySQL 查询 - 如何以某种方式对结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8704159/