Maison >base de données >tutoriel mysql >Comment puis-je conserver l'ordre lors de l'utilisation de la clause IN() de SQL ?
Utilisez la clause SQL IN() pour maintenir l'ordre
Lors du tri des résultats, il peut être difficile de garder les résultats cohérents avec l'ordre des valeurs spécifié dans la clause IN(). Ce problème peut être résolu à l’aide d’une sous-requête ou d’une table temporaire, mais existe-t-il une solution plus efficace ?
Dans MySQL, la fonction FIELD() fournit une option viable. En utilisant la fonction FIELD(), vous pouvez directement manipuler le tri en fonction de l'ordre des valeurs dans la clause IN().
<code class="language-sql">SELECT name, description, ... FROM ... WHERE id IN([ids, 无序]) ORDER BY FIELD(id, [ids, 有序])</code>
La fonction FIELD() détermine l'index dans la liste fournie de la valeur passée comme premier argument. L'index renvoyé représente l'ordre des valeurs dans la liste.
Par exemple :
<code class="language-sql">FIELD('a', 'a', 'b', 'c') -- 返回 1 FIELD('a', 'c', 'b', 'a') -- 返回 3</code>
En utilisant la fonction FIELD() et en conservant l'ordre correspondant des valeurs dans la clause IN() et la fonction FIELD(), vous pouvez efficacement rendre l'ordre des résultats cohérent avec 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!