2016-04-06 8 views
1

私は "位置"の行を持つMySQLテーブルを持っています。基本的に、独自のID、説明、タイトル(および位置)の行を持つ一連のレコード。MySQL、PHP:レコードを特定の行で「スライドダウン」する方法は?

位置はレコードごとに一意であり、2つのレコードが同じ位置を持つことはできません。新しいレコードを作成すると、最大位置値を選択して1を加算することによってその位置が作成されます。

のレコードを削除すると、テーブルの「ギャップ」の位置に問題が発生します。レコードが1,2,3,4,5ポジションの値を持ち、4番目を削除して1,2,3,5になるとします。

この行を「スライド」させて1にします。 2番目、3番目、4番目のレコードが削除された場合、1、2、3(1,3,4の代わりに)になります。

1,3,2,4,5,6、_、8のような複雑な位置のスタックがある場合は、_が削除されているので、順不同の1、3、2、4部分を尊重する必要があります。あなたが特定した後に(あなたが削除されている位置)の値はすべての値をフェッチ.Then知っている位置、&を削除すると1、3、2、4、5、6、7

enter image description here

+0

1.プライマリキーを使用せずに、プライマリキーを使用すると、同時実行性の問題が発生します。3.なぜ連続した数値が必要ですか? – Mihai

+0

@ミハイ私はすでに主キーとして 'id'を持っています。 –

+0

@Mihai PHP( 'SELECT * FROM' products 'WHERE(' position '> "。$ start。")AND(' position '<")を介してWebサイトに表示される一連の要素$ offset ")ORDER BY 'position' ASC ;;))新しい位置が占有されている場合に限り、特定の要素の位置を設定することができます(他の要素とちょっとスワップします) –

答えて

0

なりますあなたが削除した位置は、1だけ減少します。 スタックが1,2,3,4,5,6,7,8,9 &の場合、7を削除してから合計スタック数を9に変更します。 position = position-1ここで、position = 7です。

しかし、それは良い解決策ではありません。

関連する問題