SQL を使用した複数のレコードの並べ替え
このリレーショナル データベース シナリオでは、食品項目を示す「位置」フィールドを持つテーブルがあります。リスト内の表示順序 (「listID」で識別)。このタスクは、項目 (「梨」など) を特定のリスト内の新しい位置 (「チップス」の前など) に移動することです。これを単一の SQL クエリで実現するには、思慮深いアプローチが必要です。
一般的なアプローチの 1 つは、次のようなクエリを使用して影響を受けるレコードを取得することです。
<code class="sql">SELECT id, position FROM my_table WHERE listID = 1 AND position BETWEEN 1 AND 5;</code>
このクエリは、レコードの ID と位置を取得します。現在の位置とターゲット位置の間のすべてのレコード。
ただし、複数のクエリの必要性を排除する代替アプローチが存在します。データを変更して位置間に「ギャップ」を導入すると、更新プロセスを簡素化できます。
次のクエリを実行します。
<code class="sql">UPDATE my_table SET position = position * 10;</code>
これにより、すべての位置が 10 倍になり、効果的により大きなサイズが作成されます。
Pears を 2 番目の位置に移動するには、次のコマンドを実行します。
<code class="sql">UPDATE my_table SET position = 15 /* New position for "Pears" */ WHERE listID = 1 AND name = 'Pears';</code>
これにより、Pears の位置が 15 に調整され、以前に占めていたギャップが残ります。
複数の並べ替え操作後の潜在的なギャップを排除するには、以下を定期的に実行します。
<code class="sql">UPDATE my_table SET position = position * 10; /* Increase gaps */</code>
このアプローチは、単一の SQL クエリで複数のレコードを並べ替えるためのより効率的なソリューションを提供し、パフォーマンスを低下させずに項目を目的の順序に維持します。ペナルティ。
以上がパフォーマンスを低下させることなく、単一の SQL クエリで複数のレコードを並べ替えるにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。