php - MySQL 查询 - 如何以某种方式对结果进行排序

标签 php mysql database sorting

下面是我到目前为止的预览:

enter image description here

MySQL 表:

enter image description here

我想做的是能够以某种方式对其进行排序。我希望所有“免费”行都位于最顶部,因此 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/

相关文章:

php - PDO::__construct():服务器向客户端发送未知字符集 (255)。请向开发人员报告

php - 使用旧的 mysql_* API 从特定行中选择特定列

mysql - 如何在关系数据库中实现 "number of likes"

php - 除非我刷新页面,否则数据不会插入数据库?

php - WordPress - 实时更新数据库值。

php - 如何在 mysql 数据库中搜索超过一定字符数的条目?

cron - PHP - 最后一次通话

mysql - cakephp 模型使用浮点值保存问题

javascript - 使用 HREF 重定向到新页面之前设置 PHP session 变量

java - PHP 正则表达式 到 Java 正则表达式