teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

推敲

2021/10/31 09:38

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -8,6 +8,6 @@
8
8
  ただ、性能の観点からは、where条件で絞り込める場合には指定をした方が良いですが。
9
9
 
10
10
  追記
11
- このupdate文は使う場面が限定されます。
11
+ この質問のupdate文は使う場面が限定されます。
12
12
  何故なら、実行する度に値が加算されてしまうからです。
13
13
  初回のみの実行でないなら、selectなどで計算された値で更新するようになっていないと駄目ですね。

3

追記

2021/10/31 09:38

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -5,4 +5,9 @@
5
5
  備品.数量 = Switch(備品名='ホワイトボード', 数量+1, 備品名='椅子', 数量+10, True, 数量)
6
6
  ```
7
7
  updateの際、値を変更したりしなかったりという分岐が必要な場合、変更前の値で更新するという本来無駄な処理を利用すると、複雑さを回避できます。
8
- ただ、性能の観点からは、where条件で絞り込める場合には指定をした方が良いですが。
8
+ ただ、性能の観点からは、where条件で絞り込める場合には指定をした方が良いですが。
9
+
10
+ 追記
11
+ このupdate文は使う場面が限定されます。
12
+ 何故なら、実行する度に値が加算されてしまうからです。
13
+ 初回のみの実行でないなら、selectなどで計算された値で更新するようになっていないと駄目ですね。

2

追記

2021/10/30 07:44

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -4,4 +4,5 @@
4
4
  UPDATE 備品 SET
5
5
  備品.数量 = Switch(備品名='ホワイトボード', 数量+1, 備品名='椅子', 数量+10, True, 数量)
6
6
  ```
7
- updateの際、値を変更したりしなかったりという分岐が必要な場合、変更前の値で更新するという本来無駄な処理を利用すると、複雑さを回避できます。
7
+ updateの際、値を変更したりしなかったりという分岐が必要な場合、変更前の値で更新するという本来無駄な処理を利用すると、複雑さを回避できます。
8
+ ただ、性能の観点からは、where条件で絞り込める場合には指定をした方が良いですが。

1

追記

2021/10/30 06:50

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -1,5 +1,5 @@
1
- **Switch関数**は評価式がTrueの場合に対応した値を返却します。
1
+ **Switch関数**は評価式がTrueの場合に対応した値を返却しますので、評価式に該当しないものはNullが返却されます
2
- 質問の内容では**else**に該当する結果を返せるようにすればよいので、**iif()**に切り替えるか以下のようにします。
2
+ 質問の内容でwhereを省く場合**else**に該当する結果を返せるようにすればよいので、**iif()**に切り替えるか以下のようにします。
3
3
  ```SQL
4
4
  UPDATE 備品 SET
5
5
  備品.数量 = Switch(備品名='ホワイトボード', 数量+1, 備品名='椅子', 数量+10, True, 数量)