Comment trier les résultats par ordre de valeurs dans la clause "IN" d'une instruction SELECT dans MySQL
Lors de la récupération d'un ensemble d'enregistrements à l'aide d'un "IN" dans une instruction SELECT, l'ordre résultant des lignes peut ne pas s'aligner sur l'ordre des valeurs spécifiées dans la clause, laissant les résultats désordonnés. Pour résoudre ce problème, une approche courante consiste à établir une table temporaire et à utiliser une opération de jointure. Cependant, il existe une solution plus simple et plus efficace.
En utilisant la fonction FIELD(), vous pouvez spécifier l'ordre de tri souhaité dans la clause "IN" elle-même. Cette fonction évalue une valeur par rapport à une liste d'arguments fournis, renvoyant la position du premier argument auquel elle correspond. En classant les arguments dans l'ordre souhaité, vous pouvez trier efficacement les résultats en fonction des valeurs de la clause "IN".
Par exemple, en considérant l'instruction SELECT suivante :
<code class="sql">SELECT * FROM your_table WHERE id IN (5,2,6,8,12,1);</code>
Pour trier les résultats dans l'ordre des valeurs spécifiées dans la clause "IN", vous pouvez modifier la requête comme suit :
<code class="sql">SELECT * FROM your_table WHERE id IN (5,2,6,8,12,1) ORDER BY FIELD(id,5,2,6,8,12,1);</code>
En spécifiant les valeurs dans l'ordre de tri souhaité comme arguments du FIELD( ), les résultats seront renvoyés dans cet ordre exact. Cela élimine le besoin d'une table temporaire et d'une jointure, offrant une solution plus simple et plus efficace pour trier les résultats en fonction des valeurs de la clause "IN".
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!