こんにちは。
SQLiteメモの続きです。
概要
以下の記事の続きです。
【SQLite】基本操作・データベースの作成 - なんだかGoodVibes
【SQLite】テーブルの作成とデータの追加 - なんだかGoodVibes
用意するテーブル
items
Id Name TypeId ColorId Memo ---------- ---------- ---------- ---------- ---------- 1 Apple 1 1 2 Strawberry 1 1 3 Orange 1 2 4 Lemon 1 4 5 Kiwifruit 1 3 6 Banana 1 4 7 Tomato 2 1 8 Pumpkin 2 4 9 Spinach 2 3 10 GreenPeppe 2 3
colors
Id Name ---------- ---------- 1 Red 2 Orange 3 Green 4 Yellow 5 Bule 6 Purple
types
Id Name ---------- ---------- 1 Fruit 2 Vegetables
ODER BYで並び替える
昇順
itemsテーブルをColorIdで昇順に並び替えます。
sqlite> SELECT * FROM items ORDER BY ColorId ASC; Id Name TypeId ColorId Memo ---------- ---------- ---------- ---------- ---------- 1 Apple 1 1 2 Strawberry 1 1 7 Tomato 2 1 3 Orange 1 2 5 Kiwifruit 1 3 9 Spinach 2 3 10 GreenPeppe 2 3 4 Lemon 1 4 6 Banana 1 4 8 Pumpkin 2 4
降順
itemsテーブルをColorIdで降順に並び替えます。
sqlite> SELECT * FROM items ORDER BY ColorId DESC; Id Name TypeId ColorId Memo ---------- ---------- ---------- ---------- ---------- 4 Lemon 1 4 6 Banana 1 4 8 Pumpkin 2 4 5 Kiwifruit 1 3 9 Spinach 2 3 10 GreenPeppe 2 3 3 Orange 1 2 1 Apple 1 1 2 Strawberry 1 1 7 Tomato 2 1
複数のカラムで並べ替え
itemsテーブルをTypeIdとColorIdで昇順に並び替えます。
sqlite> SELECT * FROM items ORDER BY TypeId ASC, ColorId ASC; Id Name TypeId ColorId Memo ---------- ---------- ---------- ---------- ---------- 1 Apple 1 1 2 Strawberry 1 1 3 Orange 1 2 5 Kiwifruit 1 3 4 Lemon 1 4 6 Banana 1 4 7 Tomato 2 1 9 Spinach 2 3 10 GreenPeppe 2 3 8 Pumpkin 2 4
WHEREで条件を絞って取得する
itemsテーブルから、TypeIdが1のデータを取得します。
sqlite> SELECT * FROM items WHERE TypeId = 1; Id Name TypeId ColorId Memo ---------- ---------- ---------- ---------- ---------- 1 Apple 1 1 2 Strawberry 1 1 3 Orange 1 2 4 Lemon 1 4 5 Kiwifruit 1 3 6 Banana 1 4
GROUP BYでグループ化する
グループ化して数を取得する
itemsテーブルのTypeIdでグループ化して数を取得します。
sqlite> SELECT TypeId, count(*) FROM items GROUP BY TypeId; TypeId count(*) ---------- ---------- 1 6 2 4
HAVINGで条件を設定する
HAVINGはGROUP BYしたものに対して条件を設定することができます。
itemsテーブルをColorIdでグループ化して、数が2より大きいものを取得します。
sqlite> SELECT ColorId, count(*) FROM items GROUP BY ColorId HAVING count(*) > 2; ColorId count(*) ---------- ---------- 1 3 3 3 4 3
以上です。