#author("2023-05-02T17:13:58+09:00","","") #navi(../) * サブクエリ結果同士をLEFT JOINしてみる [#p482eb2f] 本資料は、クエリ結果を別のクエリ結果とLEFT JOINするサンプル構文を以下に記します。~ クエリ結果にNULLレコードを追加するLEFT JOINサンプルとなります。 #contents * 動作確認環境 [#gf1c8cf4] 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: ) * テストテーブルおよびテストデータ [#fa249588] 以下のテストテーブルとテストデータで動作確認を行いました。 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) * サブクエリとサブクエリのLEFT JOIN [#p1fb6cbd] 2つのテーブルをLEFT JOINする場合は以下のようになります。 ** テーブル同士をLEFT JOINした場合 [#yfc25963] 以下、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|h |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| ** 両方のテーブルをクエリしLEFT JOIN する [#sda235c0] 上記の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|h |5|Windows|100| |6|macOS|10| |7|Linux|NULL| |8|iOS|NULL| |9|Android|NULL| |10|FreeBSD|NULL| 以上、サブクエリ同士をLEFT JOIN するサンプル記事でした。