回答編集履歴

3

訂正

2019/12/05 01:01

投稿

sazi
sazi

スコア25138

test CHANGED
@@ -41,3 +41,21 @@
41
41
  )
42
42
 
43
43
  ```
44
+
45
+
46
+
47
+ 上記の訂正
48
+
49
+ ```SQL
50
+
51
+ update tableA A set
52
+
53
+ answer = (select answer from tableB where A_iD=A.ID)
54
+
55
+ where ID in (
56
+
57
+ select A_iD from tableB where is_reliable=1
58
+
59
+ )
60
+
61
+ ```

2

追記

2019/12/05 01:00

投稿

sazi
sazi

スコア25138

test CHANGED
@@ -23,3 +23,21 @@
23
23
  と言われている事が前提です。
24
24
 
25
25
  副問合せでは結果は1行以下でないとエラーになります。
26
+
27
+
28
+
29
+ is_reliable=1の件数が少ない場合は以下の方が高速かもしれません。
30
+
31
+ ```SQL
32
+
33
+ update tableA A set
34
+
35
+ answer = (select answer from tableB where A_iD=A.ID)
36
+
37
+ where exists(
38
+
39
+ select 1 from tableB where is_reliable=1 and A_iD=A.ID
40
+
41
+ )
42
+
43
+ ```

1

訂正

2019/12/03 16:12

投稿

sazi
sazi

スコア25138

test CHANGED
@@ -1,14 +1,16 @@
1
1
  相関副問合せによって、可能です。
2
+
3
+ 実行はしていませんので悪しからず。
2
4
 
3
5
  ```SQL
4
6
 
5
7
  update tableA A set
6
8
 
7
- answer = (
9
+ answer = coalesce((
8
10
 
9
11
  select answer from tableB where is_reliable=1 and A_iD=A.ID
10
12
 
11
- )
13
+ ), answer)
12
14
 
13
15
  ```
14
16