回答編集履歴
3
追加
test
CHANGED
@@ -13,3 +13,35 @@
|
|
13
13
|
|
14
14
|
|
15
15
|
その結果よりc.IDと等しいものが選択対象となります。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
coalesce使わないSQL
|
22
|
+
|
23
|
+
```sql
|
24
|
+
|
25
|
+
select a.ID as aID,b.ID as bID,
|
26
|
+
|
27
|
+
a.名前 as a名前,b.名前 as b名前,
|
28
|
+
|
29
|
+
a.戦闘 as a戦闘,b.戦闘 as b戦闘,
|
30
|
+
|
31
|
+
a.采配 as a采配,b.采配 as b采配
|
32
|
+
|
33
|
+
from テーブル1 a full outer join テーブル2 b on a.ID=b.ID
|
34
|
+
|
35
|
+
where exists((select c.ID,c.名前,c.戦闘,c.采配 from テーブル1 c where c.ID = a.ID
|
36
|
+
|
37
|
+
minus select c.ID,c.名前,c.戦闘,c.采配 from テーブル2 c where c.ID = b.ID)
|
38
|
+
|
39
|
+
union all
|
40
|
+
|
41
|
+
(select c.ID,c.名前,c.戦闘,c.采配 from テーブル2 c where c.ID = b.ID
|
42
|
+
|
43
|
+
minus select c.ID,c.名前,c.戦闘,c.采配 from テーブル1 c where c.ID = a.ID))
|
44
|
+
|
45
|
+
order by coalesce(a.ID,b.ID);
|
46
|
+
|
47
|
+
```
|
2
変更
test
CHANGED
File without changes
|
1
変更
test
CHANGED
@@ -2,7 +2,9 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
まずcoalesceは()内の左よりNULL値でないものを順に探して
|
5
|
+
まずcoalesceは()内の左よりNULL値でないものを順に探して、最初のNULLで無いものを値として返します。
|
6
|
+
|
7
|
+
ですのでa.IDがNULLの場合b.IDの値を返します。
|
6
8
|
|
7
9
|
a.IDがNULLでない場合はa.IDの値が帰りますし、両方共にNULLで無い場合はa.IDが戻ります。
|
8
10
|
|