0

0 から 1 に変化する float 型の行があります。結果を 0.5 に近い順に並べたいと思います。だから私は試しました:

SELECT * FROM a ORDER BY ABS(a.value - 0.5) desc

しかし、それは機能していません。0、次に 1、次に 0 を返すだけです (ランダムに見えます)。何か案は?

テーブル a には、次のように value という行があります。

A value = 1
B value = 0
C value = 0.5
D value = 0.3

この順序でそれらを返したい:

C (ABS(value - 0.5) = 0)
D (ABS(value - 0.5) = 0.2)
A (ABS(value - 0.5) = 0.5)
B (ABS(value - 0.5) = 0.5)
4

1 に答える 1

1
    select abs((a.value-0.5)) as x from a order by x asc;
    x
    ----------
    0.0
    0.2
    0.5
    0.5

これは、値の型が整数ではなく浮動小数点数であることを前提としています。私は浮動小数点数をテストしましたが、整数ではありませんでした。

于 2013-03-26T05:23:42.267 に答える