MySQL ORDER BY 两个字段条件

MySQL ORDER BY two fields condition

我在创建按以下逻辑排序的 select 查询时遇到问题:

SELECT * FROM Products WHERE 1 ORDER BY Stock > 0, Price DESC

Table样本:

+---------+-------+-------+
| Product | Price | Stock |
+---------+-------+-------+
| Car     |  3500 |    30 |
| Boat    |  7500 |     6 |
| Bike    |   150 |   220 |
| Plane   | 55000 |     0 |
+---------+-------+-------+

期望的结果是,如果股票价值大于 0,table 将按价格排序。

所以结果应该是:

+---------+-------+-------+
| Product | Price | Stock |
+---------+-------+-------+
| Boat    |  7500 |     6 |
| Car     |  3500 |    30 |
| Bike    |   150 |   220 |
| Plane   | 55000 |     0 |
+---------+-------+-------+

有什么想法吗?

MySQL中比较的结果是01。所以 Stock > 01 如果 true。并且 1 并且大于 0。所以要么使用

ORDER BY Stock = 0 ASC, Price DESC

ORDER BY Stock > 0 DESC, Price DESC

ORDER BY case when Stock > 0
              then 1
              else 2
         end, 
         Price DESC