単一 SQL クエリによるレコードの並べ替え
見た目を順序付ける「位置」フィールドを持つ食品のテーブルでは、単一のSQL クエリは、1 つのレコードに対する変更に基づいて複数のレコードを更新できます。これは、特定のリスト内の項目を並べ替える場合に特に便利です。
次のようなテーブルがあるとします。
id | listID | name | position |
---|---|---|---|
1 | 1 | cheese | 0 |
2 | 1 | chips | 1 |
3 | 1 | bacon | 2 |
4 | 1 | apples | 3 |
5 | 1 | pears | 4 |
6 | 1 | pie | 5 |
チップの前にペアを移動するには、チップ間のすべての項目の位置を増分できます。
ただし、ほとんどのソリューションには複数のクエリが含まれるため、非効率的になる可能性があります。代わりに、単一のクエリを使用してレコードを並べ替えることができます。
UPDATE my_table SET position = position + CASE WHEN name = 'pears' THEN -3 ELSE 0 END WHERE listID = 1 AND position BETWEEN 1 AND 4;
この式により、梨が位置 1 に移動し、それに応じて梨とチップの間のすべての項目が増分されます。
Toアイテムを並べ替えるには、「梨」を移動するアイテムの名前に置き換え、必要に応じて違いを調整します。
以上が単一の SQL クエリでテーブル内のレコードを並べ替える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。