MW211 EXIT

devlog
SQL/途中で並べ替えても保証はされませんよ
2013年05月16日
ソートキーが二つ以上ある場合、優先度の低い順にソートしていけば、
並び替えができる(Excelなんかで試してみればいい)。
  ┌─┐                    ┌─┐                    ┌─┐
  │B2│                    │A1│                    │A1│
  │A1│─ 二列目でソート →│B1│─ 一列目でソート →│A2│
  │B1│                    │B2│                    │B1│
  │A2│                    │A2│                    │B2│
  └─┘                    └─┘                    └─┘

ということで、以下のような並び替えを…
┌──────────────────────────────────────┐
│SELECT *                                                                    │
│    FROM 表                                                                 │
│    ORDER BY 列1 ASC,                                                       │
│             列2 ASC;                                                       │
└──────────────────────────────────────┘
以下のように副問い合わせで代用できるような気がする。
┌──────────────────────────────────────┐
│SELECT *                                                                    │
│    FROM (SELECT *                                                          │
│              FROM 表                                                       │
│              ORDER BY 列2 ASC                                              │
│          ) AS 別表                                                         │
│    ORDER BY 列1 ASC;                                                       │
└──────────────────────────────────────┘

でも、これは保証されない。
字面上は想定通りの処理順で記述したつもりでも、
オプティマイザっていうSQLを解析する機能が、処理順を適切に調整してしまうのだ。

ということで、ご注意を。
分類:SQL