Maison > base de données > tutoriel mysql > le corps du texte

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

Mary-Kate Olsen
Libérer: 2024-11-06 04:23:02
original
1016 Les gens l'ont consulté

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;
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal