Maison >base de données >tutoriel mysql >Comment puis-je conserver l'ordre lors de l'utilisation de la clause IN() de SQL ?

Comment puis-je conserver l'ordre lors de l'utilisation de la clause IN() de SQL ?

DDD
DDDoriginal
2025-01-20 14:53:08329parcourir

How Can I Preserve Ordering When Using SQL's IN() Clause?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn