回答編集履歴

1

コード例追加

2017/06/03 09:31

投稿

hatena19
hatena19

スコア33775

test CHANGED
@@ -18,6 +18,82 @@
18
18
 
19
19
 
20
20
 
21
- Not In を使ったほシンプルに記述できると思ます
21
+ Not In を使うシンプルに記述できるらしい。
22
22
 
23
+
24
+
23
- 他に、両者を Left Join で結合して、2つ目のSQLのキーフィールドがNullでないものを抽出するという方法もあります。こちらの方が軽いかも知れません。インデックスの設定にもよると思いますので、実際に試してみて、決めてください。
25
+ 両者を Left Join で結合して、2つ目のSQLのキーフィールドがNullでないものを抽出するという方法もあります。こちらの方が軽いかも知れません。インデックスの設定にもよると思いますので、実際に試してみて、決めてください。
26
+
27
+
28
+
29
+ 単純化したモデルでのSQL例を提示しておきますので、参考にして実際のSQLを記述してください。
30
+
31
+
32
+
33
+ tbl_a (id)
34
+
35
+ tbl_b (id)
36
+
37
+ tbl_a から tbl_b の id を除いたものを抽出。
38
+
39
+
40
+
41
+ **相関サブクエリ**
42
+
43
+ ```SQL
44
+
45
+ select a.id
46
+
47
+ from tbl_a as a
48
+
49
+ not exists(
50
+
51
+ select * from tbl_b as b
52
+
53
+ where a.id = b.id
54
+
55
+ );
56
+
57
+ ```
58
+
59
+
60
+
61
+ **not in 使用**
62
+
63
+ ```SQL
64
+
65
+ select id
66
+
67
+ from tbl_a
68
+
69
+ id not in (
70
+
71
+ select id from tbl_b
72
+
73
+ );
74
+
75
+ ```
76
+
77
+ **left join 使用**
78
+
79
+ ```SQL
80
+
81
+ select a.id
82
+
83
+ from
84
+
85
+ tbl_a as a
86
+
87
+ left join
88
+
89
+ tbl_b as b
90
+
91
+ on a.id = b.id
92
+
93
+ where
94
+
95
+ b.id is null;
96
+
97
+ ```
98
+
99
+