gpt4 book ai didi

MySQL - 按值的距离排序,优先考虑较高的值

转载 作者:行者123 更新时间:2023-11-29 05:25:59 25 4
gpt4 key购买 nike

我正在尝试弄清楚如何按与某个值的距离进行排序,优先考虑大于或小于。直接查询可能无法实现,但我想我还是会查询。假设我有一个名为“scores”的表:

Score
-----
24
27
23
29

我想找到最接近 25 分的值,在查找低于 25 之前返回高于 25 的最接近值。

尝试以下查询将返回 24, 23, 27, 29:

SELECT score FROM scores ORDER BY ABS(score - 25);

有没有一种直截了当的方式首先返回最接近 25 以上的分数,如果没有找到,往下看

我确信子查询是可行的,但是我的实际查询要复杂得多,有多个连接和其他条件,所以我担心使用联合或子查询的开销(以及查询的可读性) ).如果可能,希望找到实现此目的的最简单方法。

编辑:

我想确保在求助于低于 25 的任何分数之前,我已找到所有高于 25 的分数。

最佳答案

试试这个:

SELECT score 
FROM scores
ORDER BY CASE WHEN score > 25 THEN 0 ELSE 1 END ASC,
ABS(score - 25);

sqlfiddle demo

得到的结果如下:

SCORE
27
29
24
23

关于MySQL - 按值的距离排序,优先考虑较高的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20229890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com