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 :
id | listID | nom | position |
---|---|---|---|
1 | 1 | fromage | 0 |
2 | 1 | chips | 1 |
3 | 1 | bacon | 2 |
4 | 1 | pommes | 3 |
5 | 1 | poires | 4 |
6 | 1 | tarte | 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.
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