2

私は次のようなテーブルを持っています、それはIDとアイテム名、注文とタイプを持っています。

  +--------+----------------+-----------+---------+
  |  ID    |  ITEM          |   ORDER   |  TYPE   |
  +--------+----------------+-----------+---------+
  |  1     |  Banana        |    2      |  Fruit  |
  +--------+----------------+-----------+---------+
  |  2     |  Apple         |    1      |  Fruit  |
  +--------+----------------+-----------+---------+
  |  3     |  Orange        |    4      |  Fruit  |
  +--------+----------------+-----------+---------+
  |  4     |  Lemon         |    3      |  Fruit  |
  +--------+----------------+-----------+---------+

私が削除するとLemonORDERたら、1、2、4になります。次の結果を得るために残りのアイテムのインデックスを再作成する方法はありますか?

  +--------+----------------+-----------+---------+
  |  ID    |  ITEM          |   ORDER   |  TYPE   |
  +--------+----------------+-----------+---------+
  |  1     |  Banana        |    2      |  Fruit  |
  +--------+----------------+-----------+---------+
  |  2     |  Apple         |    1      |  Fruit  |
  +--------+----------------+-----------+---------+
  |  3     |  Orange        |    3      |  Fruit  |
  +--------+----------------+-----------+---------+
4

2 に答える 2

3

これを完全に自動的に行う方法はありませんが、かなり簡単に行うことができます。それが一意ではないと仮定するとORDER簡単ですが、一意である場合は、ORDER最初に "Lemon" の を取得する必要があります。次に、次のようにします。

UPDATE Fruit SET ORDER = ORDER - 1 WHERE ORDER > ?

?レモンズはどこORDER

が一意ではないと仮定するとORDER、事前にこのクエリを実行できますが、FruitLemon の注文を選択して?.

于 2013-01-14T01:50:53.413 に答える
3

行を削除する直前に、その列の値をLemon確認してください。ORDER

その後出演

UPDATE tbl SET `ORDER` = `ORDER` - 1 WHERE `ORDER` > value_lemon_had
于 2013-01-14T01:51:00.627 に答える