回答編集履歴

5

非推奨関数について追記

2017/05/05 04:51

投稿

shiroyuki
shiroyuki

スコア169

test CHANGED
@@ -25,3 +25,7 @@
25
25
  UPDATE hoge_item SET no = (@i := @i +1) WHERE fuga_id = xxx ORDER BY id;
26
26
 
27
27
  ```
28
+
29
+
30
+
31
+ あと別件になりますが、mysql_queryはPHP 5.5.0で非推奨になり、PHP 7で削除されていますので業務で使用するのであれば別関数への移行をおすすめします。

4

SQLn

2017/05/05 04:51

投稿

shiroyuki
shiroyuki

スコア169

test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  ```sql
10
10
 
11
- UPDATE hoge_item SET no = no-1 WHERE fuga_id = xxx AND no > (SELECT no FROM hoge_item WHERE fuga_id = xxx);
11
+ UPDATE hoge_item SET no = no-1 WHERE fuga_id = xxx AND no > (SELECT no FROM hoge_item WHERE id = xxx);
12
12
 
13
13
  ```
14
14
 

3

修正

2017/05/05 04:43

投稿

shiroyuki
shiroyuki

スコア169

test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  ※削除前に実行する
8
8
 
9
- ```php
9
+ ```sql
10
10
 
11
11
  UPDATE hoge_item SET no = no-1 WHERE fuga_id = xxx AND no > (SELECT no FROM hoge_item WHERE fuga_id = xxx);
12
12
 

2

追記

2017/05/05 04:38

投稿

shiroyuki
shiroyuki

スコア169

test CHANGED
@@ -1,4 +1,6 @@
1
1
  noを手動で入れ替えたり設定しているのであれば、削除対象のnoより大きいものを全て-1するのが手っ取り早いと思います。
2
+
3
+ 注意点としてupdateからdeleteまでトランザクションを使用してデータに不整合が起きないようにしてください。
2
4
 
3
5
 
4
6
 

1

途中で送信してしまった

2017/05/05 04:36

投稿

shiroyuki
shiroyuki

スコア169

test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
 
16
16
 
17
- もしnoが単純にデータ投入順なだけであれば、連番の振り直し
17
+ もしnoが単純にデータ投入順なだけであれば、連番の振り直しという手段もあります。
18
18
 
19
19
  ```sql
20
20