hakeの日記

Windows環境でプログラミングの勉強をしています。

SQLite - 重複の除去(DISTINCT)

指定したカラムで重複ているものを除去して出力する

sqlite> select * from AAA;
tt          ii          rr
----------  ----------  ----------
aaa         1           1.0
aaa         1           2.0
aaa         2           3.0
aaa         2           4.0

sqlite> select distinct tt from AAA;
tt
----------
aaa

sqlite> select distinct tt,ii from AAA;
tt          ii
----------  ----------
aaa         1
aaa         2

sqlite> select distinct tt,ii,rr from AAA;
tt          ii          rr
----------  ----------  ----------
aaa         1           1.0
aaa         1           2.0
aaa         2           3.0
aaa         2           4.0

SQLite - 出力レコード数の制限(LIMIT, OFFSET)

LIMIT句で出力するレコード数を、OFFSET句で最初からスキップするレコード数を指定する。

sqlite> select * from AAA;
tt          rr
----------  ----------
aaa         8.0
bbb         7.0
ccc         6.0
ddd         5.0
aaa         4.0
bbb         3.0
ccc         2.0
ddd         1.0

sqlite> select * from AAA limit 1;
tt          rr
----------  ----------
aaa         8.0

sqlite> select * from AAA limit 3 offset 2;
tt          rr
----------  ----------
ccc         6.0
ddd         5.0
aaa         4.0

sqlite> select * from AAA order by rr limit 3 offset 2;
tt          rr
----------  ----------
bbb         3.0
aaa         4.0
ddd         5.0

SQLite - 出力のソート(ORDER BY)

指定したカラムを昇順(ASC,省略可)または降順(DESC)でソートして出力する。

sqlite> select * from AAA;
tt          rr
----------  ----------
aaa         8.0
bbb         7.0
ccc         6.0
ddd         5.0
aaa         4.0
bbb         3.0
ccc         2.0
ddd         1.0


sqlite> select * from AAA order by tt asc, rr desc;
tt          rr
----------  ----------
aaa         8.0
aaa         4.0
bbb         7.0
bbb         3.0
ccc         6.0
ccc         2.0
ddd         5.0
ddd         1.0


sqlite> select * from AAA order by rr, tt desc;
tt          rr
----------  ----------
ddd         1.0
ccc         2.0
bbb         3.0
aaa         4.0
ddd         5.0
ccc         6.0
bbb         7.0
aaa         8.0

SQLite - カラム方向の結合(JOIN)

2つのテーブルの指定したカラムで結合することで2つのテーブルをカラム方向に広げたひとつのテーブルとして扱う

sqlite> select * from AAA;
tt          ii
----------  ----------
aaa         1
bbb         2
ccc         3
ddd         4
sqlite> select * from BBB;
ii          rr
----------  ----------
1           1.0
2           2.0
3           3.0
5           5.0

 
INNNER JOINまたはOUTER JOINにより、tt, ii, rrというカラムを持つひとつのテーブルに結合される。

内部結合(INNER JOIN)

続きを読む

SQLite - グループ化(GROUP BY)

指定したカラム毎にグループ化して、そのグループ内で処理を行う

sqlite> select * from AAA;
tt          cate        val
----------  ----------  ----------
aaa         A           1.0
bbb         A           2.0
aaa         A           3.0
bbb         B           4.0
aaa         B           5.0
bbb         B           6.0
aaa         C           7.0
bbb         C           8.0

 
selectにカラム名のみ記述した場合は、そのグループでの最初のレコードのみが出力される。グループ化対象を条件選択したい場合はwhere句を使用する。

続きを読む