SQL 指南書集 目次 - ray88’s diary
【お題】
以下の表を並べ替えする。key「B→A→D→C」の順番に並べ替える
【回答】
/* 演習問題3:ORDER BY でソート列を作る(p.288) */ SELECT * FROM Greatests ORDER BY CASE key WHEN 'B' THEN 1 WHEN 'A' THEN 2 WHEN 'D' THEN 3 WHEN 'C' THEN 4 ELSE NULL END;
【ソート列も含めて出力する場合】
/* ソート列も結果に含める(p.288) */ SELECT key ,CASE key WHEN 'B' THEN 1 WHEN 'A' THEN 2 WHEN 'D' THEN 3 WHEN 'C' THEN 4 ELSE NULL END AS sort_col ,x ,y ,z FROM Greatests ORDER BY sort_col;
【参考】テーブル作成用SQL
/* 演習問題1-1:複数列の最大値(1-3とも兼用) */ CREATE TABLE Greatests (key CHAR(1) PRIMARY KEY, x INTEGER NOT NULL, y INTEGER NOT NULL, z INTEGER NOT NULL); INSERT INTO Greatests VALUES('A', 1, 2, 3); INSERT INTO Greatests VALUES('B', 5, 5, 2); INSERT INTO Greatests VALUES('C', 4, 7, 1); INSERT INTO Greatests VALUES('D', 3, 3, 8);