回答編集履歴

3

追加

2017/10/19 01:18

投稿

A.Ichi
A.Ichi

スコア4070

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

変更

2017/10/19 01:18

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
File without changes

1

変更

2017/10/19 00:01

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
 
4
4
 
5
- まずcoalesceは()内の左よりNULL値でないものを順に探して値として返します。ですでa.IDがNULLの場合b.IDの返します。
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