"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-22
Parcourir:689

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 apparition, 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 ceci :

idlistIDnomposition
1 1fromage0
21chips1
31bacon2
41pommes3
51poires4
61tarte 5

À en déplaçant les poires avant les chips, nous pouvons incrémenter la position de tous les éléments entre eux de 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éorganiser n'importe quel article, il suffit de le faire. remplacez « poires » par le nom de l'élément à déplacer et ajustez la différence si nécessaire.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3