2009-05-20 3 views
-2

je la requête suivanteOrdonner les résultats d'une requête par le même ordre que l'énoncé

SELECT * FROM campaigns where campaign_id IN ('idStrOne', 'idStrTwo', 'idStrThree'); 

Les résultats sont commandés par la clé primaire des campagnes de table qui est « id ». Ce n'est pas l'ordre que je veux.

Je souhaite que les résultats reviennent dans le même ordre que les arguments de la fonction IN. Donc, dans ce cas, l'ordre que je veux est

idStrOne, idStrTwo, idStrThree 

Comment puis-je obtenir cette commande?

Répondre

2

Vous pouvez essayer d'ajouter une expression CASE dans la clause ORDER BY

SELECT * 
FROM campaigns 
WHERE campaign_id IN ('idStrOne', 'idStrTwo', 'idStrThree') 
ORDER BY 
(CASE campaign_id WHEN 'idStrOne' THEN 1 WHEN 'idStrTwo' THEN 2 ELSE 3 END); 
+0

+1 aiment la déclaration de cas dans l'ordre par. Utilisez-le tout le temps, un outil si précieux! – northpole

Questions connexes