在 MySQL 中,如果你有一个包含百分比值的列,并且你希望按该列排序,但将 100% 的值移到末尾,你可以使用自定义的排序逻辑来实现这一点。
假设你有一个名为 sales
的表,包含以下列:
id
: 唯一标识符product
: 产品名称percentage
: 百分比值你希望按 percentage
列排序,但将 100% 的值移到末尾。
假设你的 sales
表包含以下数据:
CREATE TABLE sales (
id INT PRIMARY KEY,
product VARCHAR(50),
percentage DECIMAL(5,2)
);
INSERT INTO sales (id, product, percentage) VALUES
(1, 'Product A', 50.00),
(2, 'Product B', 75.00),
(3, 'Product C', 100.00),
(4, 'Product D', 25.00),
(5, 'Product E', 100.00);
你可以使用 CASE
语句来创建自定义的排序逻辑,将 100% 的值移到末尾:
SELECT
id,
product,
percentage
FROM
sales
ORDER BY
CASE
WHEN percentage = 100 THEN 1
ELSE 0
END,
percentage;
CASE WHEN percentage = 100 THEN 1 ELSE 0 END
:这个 CASE
语句为每一行生成一个排序键。如果 percentage
等于 100,则返回 1,否则返回 0。这样,所有 percentage
等于 100 的行将被排序到最后。percentage
:在 CASE
语句之后,按 percentage
列进行正常排序。执行上述查询后,你将得到以下结果:
id | product | percentage
----+----------+------------
4 | Product D| 25.00
1 | Product A| 50.00
2 | Product B| 75.00
3 | Product C| 100.00
5 | Product E| 100.00
领取专属 10元无门槛券
手把手带您无忧上云