mysql データベース テーブルから次の結果セットがあるとします。
+----+------+-------+
| ID | type | value |
+----+------+-------+
| 8 | A | 1435 |
| 9 | B | 7348 |
| 10 | A | 1347 |
| 11 | A | 3478 |
| 12 | A | 4589 |
| 13 | B | 6789 |
+----+------+-------+
行 ID 8 を削除し、フィールド「値」の値を押し下げて、すべての行が前のエントリの値を持つようにしたいのですが、フィールド「タイプ」が行と同じものにのみ影響します削除されます (この場合は「A」)。
つまり、行 ID 8 を削除すると、最終的に次のようになります。
+----+------+-------+
| ID | type | value |
+----+------+-------+
| - | - | - | *
| 9 | B | 7348 | |
| 10 | A | 1435 | * |
| 11 | A | 1347 | * |
| 12 | A | 3478 | * |
| 13 | B | 6789 | V
+----+------+-------+
ID 10 は ID 8 から値を継承し、次に ID 11 は ID 10 から値を継承する、というように続きます。ただし、タイプが「B」の行は影響を受けないことに注意してください。
質問: 各行を 1 つずつクエリして更新することなく、この値の「シフト」を実行する方法はありますか? 理想的な世界では、1 つのクエリを実行してシフトを実行し、次に別のクエリを実行して行を削除しますが、これが可能かどうかはよくわかりません。
(また、すべてのアプリケーション ロジックをアプリケーション自体にカプセル化するつもりなので、トリガーを使用したくありません)