本資料は、クエリ結果を別のクエリ結果とLEFT JOINするサンプル構文を以下に記します。
クエリ結果にNULLレコードを追加するLEFT JOINサンプルとなります。
SELECT @@VERSION Microsoft SQL Server 2019 (RTM-GDR) (KB5021125) - 15.0.2101.7 (X64) Jan 23 2023 13:08:05 Copyright (C) 2019 Microsoft Corporation Developer Edition (64-bit) on Windows 10 Pro 10.0 <X64> (Build 19045: )
以下のテストテーブルとテストデータで動作確認を行いました。
CREATE TABLE m1 ( id int ,ostype varchar(20) ,live bit )
CREATE TABLE t1 ( id int ,PCs int )
INSERT INTO m1 VALUES (1,'Symbian',0) ,(2,'NeXTSTEP',0) ,(3,'OS/2',0) ,(4,'BeOS',0) ,(5,'Windows',1) ,(6,'macOS',1) ,(7,'Linux',1) ,(8,'iOS',1) ,(9,'Android',1) ,(10,'FreeBSD',1)
INSERT INTO t1 VALUES (5,100) ,(6,10) ,(7,1)
2つのテーブルをLEFT JOINする場合は以下のようになります。
以下、m1(マスタ)とt1を LEFT JOIN し場合のSQLとなります。
SELECT
m1.id
,m1.ostype
,t1.PCs
FROM
m1
LEFT JOIN t1 on m1.id = t1.id
実行結果
| id | ostype | PCs |
| 1 | Symbian | NULL |
| 2 | NeXTSTEP | NULL |
| 3 | OS/2 | NULL |
| 4 | BeOS | NULL |
| 5 | Windows | 100 |
| 6 | macOS | 10 |
| 7 | Linux | 1 |
| 8 | iOS | NULL |
| 9 | Android | NULL |
| 10 | FreeBSD | NULL |
上記のSQLのSQL の m1とt1部分をサブクエリにします。
SELECT
M.id
,M.ostype
,T.PCs
FROM
(SELECT * FROM m1 WHERE live = 1) M
LEFT JOIN
(SELECT * FROM t1 WHERE PCs >= 10) T
ON M.id = T.id
m1とt2部分をサブクエリにし、MとTとして別名を設定しています。
実行結果
| id | ostype | PCs |
| 5 | Windows | 100 |
| 6 | macOS | 10 |
| 7 | Linux | NULL |
| 8 | iOS | NULL |
| 9 | Android | NULL |
| 10 | FreeBSD | NULL |
以上、サブクエリ同士をLEFT JOIN するサンプル記事でした。