2022年12月17日土曜日

SQLite3 RIGHT JOIN (右外部結合)について

概要

SQLite ver3.39.0 からRIGHT JOIN(RIGHT OUTER JOIN)が利用可能になった。 なお、結合できなかった部分はnullになる。

実行例

user_id name 0001 ito 0002 takahashi sign_date user_id 2022-12-01 0001 2022-12-04 0002 2022-12-08 0001 2022-12-08 0003 RIGHT JOIN user sign_history name sign_date user_id ito 2022-12-01 0001 takahashi 2022-12-04 0002 ito 2022-12-08 0001 2022-12-08 0003
                    
select
    A.name
    , B.sign_date
    , B.user_id
from
    user  A
    right join
        sign_history B
        on
            A.user_id = B.user_id
order by
    B.sign_date
    , B.user_id
;
                    
                
環境
  • Windows 10 64bit
  • SQLite3 (3.39.2) Command-Line Shell
                    
sqlite> .mode box
sqlite> .nullvalue [null]
sqlite> select * from user;
┌─────────┬───────────┐
│ user_id │   name    │
├─────────┼───────────┤
│ 0001    │ ito       │
│ 0002    │ takahashi │
└─────────┴───────────┘
sqlite> select * from sign_history;
┌────────────┬─────────┐
│ sign_date  │ user_id │
├────────────┼─────────┤
│ 2022-12-01 │ 0001    │
│ 2022-12-04 │ 0002    │
│ 2022-12-08 │ 0001    │
│ 2022-12-08 │ 0003    │
└────────────┴─────────┘
sqlite> select
   ...>     A.name
   ...>     , B.sign_date
   ...>     , B.user_id
   ...> from
   ...>     user  A
   ...>     right join
   ...>         sign_history B
   ...>         on
   ...>             A.user_id = B.user_id
   ...> order by
   ...>     B.sign_date
   ...>     , B.user_id
   ...> ;
┌───────────┬────────────┬─────────┐
│   name    │ sign_date  │ user_id │
├───────────┼────────────┼─────────┤
│ ito       │ 2022-12-01 │ 0001    │
│ takahashi │ 2022-12-04 │ 0002    │
│ ito       │ 2022-12-08 │ 0001    │
│ [null]    │ 2022-12-08 │ 0003    │
└───────────┴────────────┴─────────┘
                    
                

参考URL