今日もSQLZOOでSQLを学んだ。 sqlzoo.net
昨日のブログでBETWEENを試したが、以下のようにも書ける。
SELECT idl.id AS id, idl.name AS name, COUNT(idl.id) AS count FROM idol idl INNER JOIN idol_unit idlunt ON idl.id = idlunt.idol INNER JOIN unit unt ON idlunt.unit = unt.id GROUP BY idl.id HAVING idl.count >= 2 AND idl.count <= 3 ORDER BY idl.count DESC ;
↓
id | name | count ----+-------------+------- 20 | 浅倉 透 | 3 17 | 黛 冬優子 | 3 16 | 有栖川 夏葉 | 3 7 | 白瀬 咲耶 | 2 15 | 西城 樹里 | 2 (省略)
開発環境
$ docker exec -it faaaar-db bash root@{CONTAINER_ID}:/# psql -U postgres postgres=# \dt List of relations Schema | Name | Type | Owner --------+-----------+-------+---------- public | idol | table | postgres public | idol_unit | table | postgres public | unit | table | postgres
LIKE: 基本形
nameが"田"の前に1文字、後に0文字以上のレコードを抽出。
SELECT id, name FROM idol WHERE name like '_田%' ;
↓
id | name ----+------------- 13 | 園田 智代子 25 | 緋田 美琴
LIKE: 基本形2
nameに"美"が1文字入っているレコードを抽出。
SELECT id, name FROM idol WHERE name like '%美%' ;
↓
id | name ----+------------- 6 | 田中 摩美々 25 | 緋田 美琴
マイルドな正規表現な感じ。
一般的な正規表現を使う場合は別の構文があるみたい。宿題。