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!