实例:
CREATE TABLE properties (
id INT AUTO_INCREMENT PRIMARY KEY,
price DECIMAL(10, 2) NOT NULL
);
INSERT INTO properties (price) VALUES
(100.50),
(200.75),
(0.0),
(300.00),
(150.25);
方法:
使用 CASE 语句在 ORDER BY 中对 0.0 的值进行特殊处理:
SELECT * FROM properties
ORDER BY
CASE
WHEN price = 0.0 THEN 1
ELSE 0
END,
price;
解释:
- CASE WHEN price = 0.0 THEN 1 ELSE 0 END: 这个 CASE 语句在 price 为 0.0 时返回 1,否则返回 0。这样,所有的 0.0 值会被排序在最后。
- price: 在 CASE 语句之后,按价格从小到大排序。
结果:
id | price
—+——-
1 | 100.50
5 | 150.25
2 | 200.75
4 | 300.00
3 | 0.00