「このカラム内,2~3~1の順番でソートして欲しいんですけど!」
2,3,1でそれぞれSELECTして最後にUNIONするしかないか,と思ったが,
MySQLの場合はORDER BY field({colname},{val}[,val...]) という感じで書けるらしい.
というテーブルordertestがあったとして
SELECT * FROM ordertest ORDER BY field(type,2,1,4,3);
B 2
A 1
D 4
C 3
という感じで行ける.
しかし中途半端に指定した場合はそこだけ有効になる.
SELECT * FROM ordertest ORDER BY field(type,4,2);
A 1
C 3
D 4
B 2
という感じ.
fieldに指定されなかった部分は不定のようです? アテにしないほうがよさげ.
ORDER BY filed(~),field(~) と指定することもできます.
これとCASE文の組み合わせで結構いろいろできますね.
filed じゃなく field かな。
こういうのもあるのは知らなかった。
http://dev.mysql.com/doc/re...
によれば、引数に出てこなかった要素は「0」になるから、それらの順序は一応不定ですな。
ちなみに自分なら Field() 使わないならきっとこうしてた。(2,1,4,3 に並べるとして、
)
ORDER BY age <> 2, age <> 1, age <> 4, age <> 3;
こういうのもあるのは知らなかった。
http://dev.mysql.com/doc/re...
によれば、引数に出てこなかった要素は「0」になるから、それらの順序は一応不定ですな。
ちなみに自分なら Field() 使わないならきっとこうしてた。(2,1,4,3 に並べるとして、
)
ORDER BY age <> 2, age <> 1, age <> 4, age <> 3;