本資料は、クエリ結果を別のクエリ結果と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 するサンプル記事でした。