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中比较的结果是0
或1
。所以 Stock > 0
是 1
如果 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
我在创建按以下逻辑排序的 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中比较的结果是0
或1
。所以 Stock > 0
是 1
如果 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