Question

J'ai un tableau PHP avec des numéros d'identification JOUE DEDANS. Ces chiffres sont déjà commandés.

Maintenant, je voudrais obtenir mon résultat via la méthode IN (), pour obtenir tous les numéros d'identification.

Cependant, doivent être commandés de ces d'identité, par exemple dans le procédé.

Par exemple:

IN(4,7,3,8,9)  

devrait donner un résultat comme:

4 - Article 4  
7 - Article 7  
3 - Article 3  
8 - Article 8  
9 - Article 9

Toutes les suggestions? Peut-être il y a une fonction pour le faire?

Merci!

Était-ce utile?

La solution

Je pense que vous cherchez peut-être pour la fonction CHAMP - alors que normalement considéré comme une fonction de chaîne, il fonctionne très bien pour les nombres aussi

ORDER BY FIELD(field_name, 3,2,5,7,8,1)

Autres conseils

Vous pouvez utiliser FIELD() :

ORDER BY FIELD(id, 3,2,5,7,8,1)
  

Renvoie l'index (position) de str dans le str1, str2, str3, .... Retourne 0 si str est introuvable.

Il est un peu une bidouille horrible, donc vraiment utiliser seulement si vous avez pas d'autre choix. Tri de la sortie dans votre application peut-être mieux.

SQL standard ne fournit pas une façon de le faire (MySQL peut, mais je préfère des solutions à tout moment fournisseur neutre pour que je puisse changer de SGBD »).

Ceci est quelque chose que vous devez faire dans le post-traitement après le jeu de résultats est retourné. SQL ne peut les retourner dans un ordre spécifié dans l ' « ordre par » clause (ou any pour s'il n'y a pas une telle clause).

L'autre possibilité (bien que je ne l'aime pas, je suis lié honneur à vous donner le choix) est de faire plusieurs voyages à la base de données, un pour chaque ID, et de les traiter comme ils viennent dans:

select * from tbl where article_id = 4;
// Process those.
select * from tbl where article_id = 7;
// Process those.
: : : : :
select * from tbl where article_id = 9;
// Process those.

Vous aurez juste besoin de donner l'ordre par la déclaration.

SELECT ID FROM myTable WHERE ID IN(1,2,3,4) ORDER BY ID

Pourquoi voudriez-vous pour obtenir vos données commandées comme dans votre non ordonnée par exemple?

Si vous ne me dérange pas concatening requêtes longues, essayez de cette façon:

SELECT ID FROM myTable WHERE ID=1
UNION
SELECT ID FROM myTable WHERE ID=3
UNION
SELECT ID FROM myTable WHERE ID=2
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top