カテゴリのあるテーブルがあります。
ID Category
"1","Baking"
"3","Family"
"4","Entertaining"
"5","Children"
"6","Desserts"
ここで、selectステートメントの結果を次のように注文します。
ID Category
"4","Entertaining"
"3","Family"
"1","Baking"
"5","Children"
"6","Desserts"
例えば。 MySQLでは、次のようにします。
SELECT * FROM CATEGORIES ORDER BY FIELD (ID, 4,3,1,5,6);
しかし、SQLiteでどのようにそれを行いますか? 「orderby」フィールドがありません。
ORDER BY
CASE ID
WHEN 4 THEN 0
WHEN 3 THEN 1
WHEN 1 THEN 2
WHEN 5 THEN 3
WHEN 6 THEN 4
END
それを行う2番目の方法(最初の方法はCASE WHEN ... THEN END
他の回答ですでに述べたように)は:
ORDER BY ID=4 DESC,
ID=3 DESC,
ID=1 DESC,
ID=5 DESC,
ID=6 DESC
「orderby」フィールドがありません
何故なの?
ソート順がアプリケーション固有であるためである場合は、データベースではなくアプリケーションでソートを実行します。
並べ替え順序がこの1つのクエリに固有であるためである場合は、クエリでエンコードします。ただし、これを呼び出し元のアプリケーションに対して透過的にすることを強くお勧めします。 (標準SQL構文):
SELECT T2.ID, T2.Category,
T2.query_name_here_sort_order
FROM (
SELECT T1.ID, T1.Category,
CASE ID
WHEN 4 THEN 1
WHEN 3 THEN 2
WHEN 1 THEN 3
WHEN 5 THEN 4
WHEN 6 THEN 5
END AS query_name_here_sort_order
FROM CATEGORIES AS T1
) AS T2 (
ID, Category,
query_name_here_sort_order
)
ORDER
BY query_name_here_sort_order;
並べ替え順序が複数のクエリやアプリケーションで使用されている場合は、それをデータベース内のテーブルの列に追加してから、クエリでその列を使用します。