sql >> データベース >  >> RDS >> Mysql

並べ替えインデックス列を更新してアイテムを移動する

    これは、単一のクエリで実行できるはずです。UPDATE foo SET sort_index = sort_index + 1 WHERE bar_id == b AND sort_index < s1 AND sort_index >= s2の行に沿ったもの 、ここでb bar_idです 移動する行のs1 現在のsort_indexです その行の、およびs2 sort_indexです あなたはそれを移動したいです。次に、sort_indexを変更するだけです。 行の。

    おそらく、トランザクション内で2つのクエリを実行することをお勧めします。また、sort_indexにインデックスを作成すると、処理が高速化される可能性があります。 CREATE INDEX foo_index ON foo (sort_index)のようなものを使用する 。

    (ちなみに、ここでは重複したsort_indexは必要ないと想定しています。 指定されたbar_id内の値 、および行の相対的な順序は、明示的に以外は変更しないでください。これが必要ない場合、解決策はさらに簡単です。)




    1. ユーザーをさまざまな組織、大学、さまざまな役割を持つ企業にバインドするにはどうすればよいですか?

    2. JavaDateHibernateのカットオフ時間

    3. OracleSQLDeveloper-java.library.pathにocijdbc12がありません

    4. ストアドプロシージャでカーソルを使用して行をループするMySQL