Maison  >  Article  >  base de données  >  Comment réorganiser les enregistrements dans une table avec une seule requête SQL ?

Comment réorganiser les enregistrements dans une table avec une seule requête SQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-06 04:23:02956parcourir

How to Reorder Records in a Table with a Single SQL Query?

Réorganisation des enregistrements avec une seule requête SQL

Dans une table d'aliments avec un champ "Position" pour ordonner leur apparence, un seul La requête SQL peut mettre à jour plusieurs enregistrements en fonction d'une modification apportée à un seul enregistrement. Ceci est particulièrement utile pour réorganiser les éléments dans une liste spécifique.

Supposons que nous ayons un tableau comme celui-ci :

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

Pour déplacer les poires avant les chips, nous pouvons incrémenter la position de tous les éléments entre les par 1.

Cependant, la plupart des solutions impliquent plusieurs requêtes, ce qui peut être inefficace. Au lieu de cela, une seule requête peut être utilisée pour réorganiser les enregistrements :

UPDATE my_table
SET position = position + CASE
    WHEN name = 'pears' THEN -3
    ELSE 0
    END
WHERE listID = 1 AND position BETWEEN 1 AND 4;

Cette formule garantit que les poires se déplacent en position 1 et que tous les éléments entre les poires et les chips sont incrémentés en conséquence.

Pour réorganisez n'importe quel article, remplacez simplement « poires » par le nom de l'article à déplacer et ajustez la différence si nécessaire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn