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

回答編集履歴

1

修正

2018/03/13 12:43

投稿

退会済みユーザー
answer CHANGED
@@ -40,13 +40,14 @@
40
40
  WHERE `id` = 5;
41
41
  ```
42
42
 
43
- この時、id=3〜4のレコードは、`order_number` を+1すればいい。
43
+ この時、id=2〜4のレコードは、`order_number` を+1すればいい。
44
44
  移動したレコードの表示順が「5 → 2」に変化することから、
45
45
 
46
46
  ```sql
47
47
  UPDATE `sample` SET `order_number` = `order_number` + 1
48
- WHERE `order_number` > 2
48
+ WHERE `order_number` >= 2
49
49
  AND `order_number` < 5
50
+ AND `id` != 5
50
51
  ```
51
52
 
52
53
  ### 例2
@@ -58,13 +59,14 @@
58
59
  WHERE `id` = 2;
59
60
  ```
60
61
 
61
- この時、id=3〜4のレコードは、`order_number` を-1すればいい。
62
+ この時、id=3〜5のレコードは、`order_number` を-1すればいい。
62
63
  移動したレコードの表示順が「2 → 5」に変化することから、
63
64
 
64
65
  ```sql
65
66
  UPDATE `sample` SET `order_number` = `order_number` - 1
66
67
  WHERE `order_number` > 2
67
- AND `order_number` < 5
68
+ AND `order_number` <= 5
69
+ AND `id` != 2
68
70
  ```
69
71
 
70
72
  どちらも2つのクエリを実行すれば良いということになります。