私の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や他のスクリプトを使わずに?
私の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や他のスクリプトを使わずに?
これは少し手っ取り早い試みですが、目的の結果が得られたようですが、なぜそれを行う必要があるのかは完全にはわかりません。 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;