![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
バージョン4.1.16を使っています。
jyunban(順番)を設けて、ある行が削除されたら
それより後ろにある行全てのjyunbanを1つ前に繰り上げたいです。
id name jyunban
1 鈴木 1
2 吉田 2
3 加藤 3
4 田中 4
5 佐藤 5
6 高橋 6
7 渡辺 7
とあって、例えばid「2」とid「5」を削除した時に
jyunbanの値を前に詰めたいのです。
id name jyunban
1 鈴木 1
3 加藤 2
4 田中 3
6 高橋 4
7 渡辺 5
これはトリガーなどを使わないと無理なのでしょうか?
それともそもそもjyunban(順番)という列を使わずに
これと同じような概念を作ることは可能なのでしょうか?
No.4ベストアンサー
- 回答日時:
こんにちは。
まず、MySQL 4.x シリーズですと希望の動作は、
私の知ってる範囲ではできません。
MySQL 5.x シリーズではストアドプロシージャがサポートされています。
「削除」という操作を、ストアドプロシージャで行い、削除と同時に
順番を更新すればよいのではないでしょうか?
但し、その場合、注意しなければならないのは、同時更新への対応です。
すべてのレコードに対して変更が加えられる可能性がありますから、
Aユーザーが更新中に、Bユーザーが更新した場合に正しく更新されるか、
という点については慎重にテストしなければいけません。
ご返答ありがとうございます。
ストアドプロシージャという方法を使ってでも
そんなに簡単にうまくいくわけでもなさそうですね・・・
どうもjyunbanの設置には無理がある気がするので
変更を検討していきたいと思います。
No.3
- 回答日時:
(1)この「順番」は、何のために必要なのですか?
(2)データ件数は、最大で何件くらいになりますか?
(3)同時にこの表にアクセスするのは、一人だけに限定できますか?
(4)「特定データを削除して番号をずらせる」に加え、「あるデータとあるデータを置換」という要件があるとのことですが、「あるデータとあるデータの間に挿入」といった要件も出てくるのでは?
(5)バージョン4.1.16では、トリガやストアドプロシジャは使えませんよ?
No.1
- 回答日時:
後から空いているidに追加する事はあるんでしょうか?
そうでなければidでソートすればいいだけの様な感じがしますが・・・
ご返答ありがとうございます。
説明不足で申し訳ありません。順番の入れ替えも行いたいと思ってるので
やはりjyunban(順番)という項目を作る必要があると思うのです。
例えば、加藤と高橋の順番を入れ替えると
id name jyunban
1 鈴木 1
3 加藤 4
4 田中 3
6 高橋 2
7 渡辺 5
主キーのidは変わらずに、こういう形になると思います。
そうなった場合、2つ(id「2」とid「5」)削除した時に
jyunbanも変わっている必要があるので、
そういう変えられるSQL文や、あるいは方法が知りたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP MySql PHP 2つのテーブルをJOINで結合 user_idで抽出 1 2023/01/03 14:04
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- MySQL mysqlの結合について教えてください 1 2022/05/19 15:13
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- その他(プログラミング・Web制作) pythonのWebスクレイピングでfind_allだとurlがNoneに 4 2022/04/17 18:21
- 計算機科学 Excel ある行と列が交わったところにマークを付けるには 7 2023/01/24 08:46
- Visual Basic(VBA) 【ExcelVBA】Powerクエリーでいうピボット解除と同じ処理をVBAで 4 2022/07/06 17:09
- MySQL 【MySQL】本当に困っているので、助けてください。よろしくお願いします。 3 2023/06/03 14:24
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 1 2022/10/27 14:21
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
SQL Left Join で重複を排除す...
-
PL/SQLの変数について
-
SQLサーバから、項目の属性(型...
-
エクセルの関数について教えて...
-
selectで拾ってきたデータをも...
-
期間の重複を調べるSQL文につい...
-
URL と行番号の指定
-
sqlで、600行あるテーブルを100...
-
VIEWの元のテーブルのindexって...
-
全角文字を含む行を検索
-
”photo id” とは何ぞや?
-
inner joinをすると数がおかし...
-
少し前に放送されていたオムツ...
-
これなんですか?
-
別テーブルからSELECTした値を...
-
ある条件の最大値+1を初番する...
-
#1136 - Column count doesn't ...
-
MySQLのint型で001と表示する方...
-
WordpressのContact form 7でzi...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
副問合せの書き方について
-
SQLサーバから、項目の属性(型...
-
SQL Left Join で重複を排除す...
-
select文のwhere句に配列を入れ...
-
VIEWの元のテーブルのindexって...
-
PL/SQLの変数について
-
マイクラPC版のコマンドで効率...
-
エクセルの関数について教えて...
-
SQLにて特定の文字を除いた検索...
-
sqlで、600行あるテーブルを100...
-
Access パラメータクエリをcsv...
-
Unionした最後にGROUP BYを追加...
-
inner joinをすると数がおかし...
-
複数テーブルのGROUP BY の使い...
-
ある条件の最大値+1を初番する...
-
MySQLのint型で001と表示する方...
-
クエリ表示と、ADOで抽出したレ...
-
[MySQL] UNIQUE制約の値を更新...
-
テーブル名を省略して「h.id」...
おすすめ情報