Lors de la récupération de données d'une base de données MySQL, il est souvent nécessaire de classer les résultats dans un ordre spécifique séquence. La méthode IN() peut être utilisée pour récupérer des enregistrements sur la base d'une liste de valeurs prédéfinie, mais le défi se pose lorsque vous souhaitez conserver l'ordre des valeurs dans la clause IN() dans l'ensemble de résultats.
Le problème :
Supposons que vous disposiez d'un tableau PHP contenant des numéros d'identification ordonnés et que vous souhaitiez utiliser la méthode IN() pour récupérer les enregistrements correspondants d'une table MySQL. Cependant, vous devez renvoyer ces enregistrements dans le même ordre que celui spécifié dans la clause IN().
La solution :
Une fonction puissante qui peut résoudre ce problème le défi est FIELD(). Elle est principalement connue sous le nom de fonction de chaîne, mais elle fonctionne également efficacement avec des données numériques. En utilisant FIELD(), vous pouvez spécifier l'ordre souhaité des valeurs dans la clause IN() et MySQL organisera les résultats en conséquence.
Exemple :
Considérons le tableau PHP suivant avec des numéros d'ID ordonnés :
$ids = [4, 7, 3, 8, 9];
Pour récupérer les enregistrements correspondants d'une table nommée articles, tout en conservant l'ordre des ID, vous peut utiliser la requête MySQL suivante :
SELECT * FROM articles ORDER BY FIELD(id, 3, 2, 5, 7, 8, 1);
Dans cette requête, la fonction FIELD() est utilisée pour trier les résultats en fonction de l'ordre des valeurs dans le deuxième paramètre. L'ordre spécifié dans la clause IN() est [4, 7, 3, 8, 9], mais nous souhaitons que le résultat soit renvoyé sous la forme : 3, 2, 5, 7, 8, 1. Par conséquent, nous fournissons les valeurs dans cet ordre exact comme deuxième paramètre de FIELD(). Cela garantit que les articles sont renvoyés dans l'ordre souhaité.
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!