企業および個人 (顧客) に属する電話番号を含む MySQL テーブルがあります。各顧客は複数の電話番号を持つことができ、多くの場合、特定の順序でリストする必要があるため、テーブルにはsequence各顧客の電話番号を好みに応じて並べ替えるフィールドがあります。フィールドは次のとおりです。
parent_id- 文字sequence-tinyintarea_code- ストリングnumber- ストリング
主キーは と の組み合わせparent_idですsequence。
ここまでは順調ですね。「問題」は、番号を上に移動したり、番号を削除したりするときに発生します。
番号を上に移動するとき、私が (PHP を使用して) 行う方法は、そのレコードsequenceを 0 に変更し (顧客の最初の電話番号は通常 1 です。これのためだけに 0 を使用します)、前の番号sequenceを 1 ずつ増やしてから設定します。元のレコードsequenceは以前よりも 1 少なくなりました。sequenceつまり、 を前の電話番号と入れ替えますが、3 つのクエリが必要です。
電話番号を削除するときは、そのレコードを削除してから、その顧客の残りの電話番号を、欠落がないように再ソートする必要がありsequenceます。顧客が持っている電話番号の数によって異なりますが、複数のクエリになる場合があります。
もっと効率の良い方法がないか考えてみました。
前もって感謝します!