概要
SQLite ver3.39.0 からFULL JOIN(FULL OUTER JOIN)が利用可能になった。 なお、結合できなかった部分はnullになる。
実行例
select
A.last_login as siteA_last_login
, A.mail_address as siteA_mail_address
, B.mail_address as siteB_mail_address
, B.last_login as siteB_last_login
from
siteA_user A
full join
siteB_user B
on
A.mail_address = B.mail_address
;
環境
- Windows 10 64bit
- SQLite3 (3.39.2) Command-Line Shell
sqlite> .nullvalue [null]
sqlite> .mode box
sqlite> select * from siteA_user;
┌─────────┬───────────────────┬────────────┐
│ user_id │ mail_address │ last_login │
├─────────┼───────────────────┼────────────┤
│ 0001 │ userA@example.com │ 2022-12-01 │
│ 0002 │ userB@example.com │ 2022-12-09 │
│ 0003 │ userC@example.com │ 2022-12-11 │
└─────────┴───────────────────┴────────────┘
sqlite> select * from siteB_user;
┌─────────┬───────────────────┬────────────┐
│ user_id │ mail_address │ last_login │
├─────────┼───────────────────┼────────────┤
│ X001 │ userB@example.com │ 2022-11-28 │
│ Y002 │ userD@example.com │ 2022-12-04 │
│ Z003 │ userC@example.com │ 2022-12-08 │
└─────────┴───────────────────┴────────────┘
sqlite> select
...> A.last_login as siteA_last_login
...> , A.mail_address as siteA_mail_address
...> , B.mail_address as siteB_mail_address
...> , B.last_login as siteB_last_login
...> from
...> siteA_user A
...> full join
...> siteB_user B
...> on
...> A.mail_address = B.mail_address
...> ;
┌──────────────────┬────────────────────┬────────────────────┬──────────────────┐
│ siteA_last_login │ siteA_mail_address │ siteB_mail_address │ siteB_last_login │
├──────────────────┼────────────────────┼────────────────────┼──────────────────┤
│ 2022-12-01 │ userA@example.com │ [null] │ [null] │
│ 2022-12-09 │ userB@example.com │ userB@example.com │ 2022-11-28 │
│ 2022-12-11 │ userC@example.com │ userC@example.com │ 2022-12-08 │
│ [null] │ [null] │ userD@example.com │ 2022-12-04 │
└──────────────────┴────────────────────┴────────────────────┴──────────────────┘
参考URL
-
SQLite 公式サイト(英語)
https://www.sqlite.org/index.html -
SQLite FULL JOIN に関するドキュメント
https://www.sqlite.org/lang_select.html#fulljoin