1

注文をmysqlテーブルの行に割り当てる最良の方法は何ですか? 行 1 から 5 があり、4 を削除したい場合、どうすれば 5 を新しい 4 にできますか? 3 を新しい 1 にすると、他の各行に 1 を追加する必要があります。1 行、2 行、または 100 行になる可能性があります。

各不測の事態を手動でプログラミングするよりも簡単な方法はありますか?

前もって感謝します。

追加: 顧客に表示するパッケージを追加するインターフェイスがあります。ID の昇順で自動的に並べ替えられます。値段とかパッケージ名とかなんでもいいけど、たまには自分の好みで勝手に注文したい。

再度、感謝します。

4

3 に答える 3

3

order_columnデータベースに一意の列があると仮定します。

位置 x に新しい行を追加するには:

  • テーブルのロック
  • position >= x のすべての行を更新し、1 を追加します
  • 次に、位置 x に新しい行を挿入します
  • テーブルのロックを解除

位置 x と y を交換するには:

  • UPDATE table SET x=(@temp:=x), x = y, y = @temp;

(ソース)

位置 x の行を削除するには:

  • テーブルのロック
  • 位置 x の行を削除
  • position > x のすべての行を更新し、1 を減算します。
  • テーブルのロックを解除

データを表示するには:
のみ。ORDER BYorder_column

于 2012-10-11T03:00:47.463 に答える
1

順序付けの基本的な方法は、通常、特定の列をアルファベット順または数値順に並べることになります。または、必要な順序をデータに基づいて作成できない場合は、順序付けのために特別に列を追加し、データを入力するインターフェイスを作成する必要があります。後で行う必要があるようです。

于 2012-10-11T02:53:32.480 に答える
0

私が質問を完全に誤解していない限り:

テーブルをそのままにして、行を ing するORDER BYときの並べ替えを決定するために使用します。SELECT

于 2012-10-11T02:57:11.263 に答える