0

私のtable_a:

A|B|C // Columns
3|4|0 // Values

最初に小さな値で選択順序付けを行いたい..次のようなもの:

"SELECT * FROM table_a ORDER BY (smallest of A,B,C first, second and third (Bigger one)) ASC"

returns: C=0,A=3,B=4

それは可能ですか?PHPや他のスクリプトを使わずに?

4

1 に答える 1

0

これは少し手っ取り早い試みですが、目的の結果が得られたようですが、なぜそれを行う必要があるのか​​は完全にはわかりません。 http://sqlfiddle.com/#!2/1d3ec/2

SELECT
    l2.A,
    l2.B,
    l2.C
FROM (
    SELECT
        l1.A,
        l1.B,
        l1.C,
        l1.smallestColumn,
        l1.largestColumn,
        CASE
            WHEN l1.A > l1.smallestColumn AND l1.A < l1.largestColumn THEN l1.A
            WHEN l1.B > l1.smallestColumn AND l1.B < l1.largestColumn THEN l1.B
            ELSE l1.C -- Fallback to C, in case of a tied result
        END AS middleColumn
    FROM (
        SELECT
            A,
            B,
            C,
            LEAST( A , B , C ) AS smallestColumn,
            GREATEST( A , B , C ) AS largestColumn
        FROM table_a
    ) l1
) l2
ORDER BY
    l2.smallestColumn,
    l2.middleColumn,
    l2.largestColumn;
于 2013-06-11T17:46:19.127 に答える