回答編集履歴

6

追記

2018/12/21 06:10

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -63,3 +63,23 @@
63
63
  ```
64
64
 
65
65
  ※但し、どちらに存在しているかの情報が無いけど良いんだろうか、という点
66
+
67
+
68
+
69
+ 追記
70
+
71
+ --
72
+
73
+ ```SQL
74
+
75
+ insert into INPUT_TEST_003
76
+
77
+ select * from INPUT_TEST_001
78
+
79
+ where Num In (
80
+
81
+ select Num from INPUT_TEST_002 A where not exists(select 1 from INPUT_TEST_003 B where A.NUM=B.NUM)
82
+
83
+ )
84
+
85
+ ```

5

推敲

2018/12/21 06:10

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -1,4 +1,6 @@
1
1
  上手く行かないのは、サブクエリー内で`INPUT_TEST_001`を参照していて、相関になっていないから。
2
+
3
+ 1.`INPUT_TEST_001`にしか存在しない場合
2
4
 
3
5
  ```SQL
4
6
 
@@ -14,7 +16,7 @@
14
16
 
15
17
  ```
16
18
 
17
- 何れ存在するものという事なら
19
+ 2.両方に存在する場合
18
20
 
19
21
  ```SQL
20
22
 
@@ -34,7 +36,7 @@
34
36
 
35
37
 
36
38
 
37
- 何れか一方にしか存在しないものという事なら、
39
+ 3.何れか一方にしか存在しないものという事なら、
38
40
 
39
41
  ```SQL
40
42
 

4

推敲

2018/12/21 05:37

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -30,6 +30,10 @@
30
30
 
31
31
  ```
32
32
 
33
+ ※ただ、キーが同じであれば内容も同じという前提でなければ、用途を満たさないのではないかと思われる。
34
+
35
+
36
+
33
37
  何れか一方にしか存在しないものという事なら、
34
38
 
35
39
  ```SQL

3

追記

2018/12/21 05:17

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -7,6 +7,22 @@
7
7
  select * from INPUT_TEST_001 A
8
8
 
9
9
  where not exists (
10
+
11
+ select 1 from INPUT_TEST_002 B where A.NUM=B.NUM
12
+
13
+ )
14
+
15
+ ```
16
+
17
+ 何れにも存在するものという事なら、
18
+
19
+ ```SQL
20
+
21
+ insert into INPUT_TEST_003
22
+
23
+ select * from INPUT_TEST_001 A
24
+
25
+ where exists (
10
26
 
11
27
  select 1 from INPUT_TEST_002 B where A.NUM=B.NUM
12
28
 

2

追記

2018/12/21 05:13

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -39,3 +39,5 @@
39
39
  )
40
40
 
41
41
  ```
42
+
43
+ ※但し、どちらに存在しているかの情報が無いけど良いんだろうか、という点

1

追記

2018/12/21 05:04

投稿

sazi
sazi

スコア25184

test CHANGED
@@ -13,3 +13,29 @@
13
13
  )
14
14
 
15
15
  ```
16
+
17
+ 何れか一方にしか存在しないものという事なら、
18
+
19
+ ```SQL
20
+
21
+ insert into INPUT_TEST_003
22
+
23
+ select * from INPUT_TEST_001 A
24
+
25
+ where not exists (
26
+
27
+ select 1 from INPUT_TEST_002 B where A.NUM=B.NUM
28
+
29
+ )
30
+
31
+ union all
32
+
33
+ select * from INPUT_TEST_002 A
34
+
35
+ where not exists (
36
+
37
+ select 1 from INPUT_TEST_001 B where A.NUM=B.NUM
38
+
39
+ )
40
+
41
+ ```