0

2 つの投稿の間に投稿を追加し、新しい注文をデータベースに保存するソリューションを探しています。

通常の投稿の順序サポートを追加しました。このフィールドを使用して、ページ内の投稿を順序付けする予定です。新しい投稿は、AJAX を介して同じページから作成されています。すべての投稿の親は同じです。

ので、私は持っています:

  1. ポストA
  2. ポストB
  3. PostC

ここで、PostA と PostB の間に新しい投稿 (PostD) を作成したいと思います。したがって、新しい順序は次のようになります

  1. ポストA
  2. ポストD
  3. ポストB
  4. PostC

そのため、投稿 B と C の注文番号を更新する必要があり、新しい PostD が保存されると、PostD には注文番号 2 が割り当てられます。

私は疑問に思っています、これに対する最善の解決策は何でしょうか。たぶん、次のようなことをする SQL クエリを実行できます。

投稿の親が XX で、注文番号 >= 新しい投稿番号のすべての投稿を取得し、これらの投稿の注文番号に +1 を追加します。

どんな助けでも大歓迎です、ありがとう!

4

2 に答える 2

0

10000 のステップを使用します。

アルゴリズム:

  • 最後の投稿の後に新規投稿する場合 -注文番号は最後の番号+ 10000に設定されます
  • それ以外の場合は、投稿の前後の算術平均注文数を取得します
  • 投稿間に空き番号がない場合 - 完全な再番号付けの投稿ブランチを実行します。その後、新しい行を挿入します。

再番号付けクエリ:

update posts
   set number=(select @i:=@i+10000)
 where (select @i:=1)=1 and (condition_for_select_posts_branch)
 order by number
于 2016-08-25T14:10:57.853 に答える