2010-04-09 8 views
1

Lorsque vous utilisez:MySQL OÙ - Commande

SELECT * FROM some_table WHERE id IN(4,2,1,3,5); 

L'ordre résultant est:

1,2,3,4,5 

Que puis-je faire pour retourner les résultats dans le même ordre que je les interrogés dans?

grâce

+1

en double possible de http://stackoverflow.com/questions/396748/ordering-by- l'-ordre-des-valeurs-dans-une-sql-in-clause – itsmatt

Répondre

7
SELECT * 
FROM some_table 
WHERE id IN(4,2,1,3,5) 
ORDER BY FIELD (id, 4,2,1,3,5); 

Plus d'info sur MySQL FIELD() fonction

1
SELECT * 
FROM some_table 
WHERE id IN (4,2,1,3,5) 
order by case id 
    when 4 then 1 
    when 2 then 2 
    when 1 then 3 
    when 3 then 4 
    when 5 then 5 
end 

ou

SELECT * FROM some_table WHERE id = 4 
union all 
SELECT * FROM some_table WHERE id = 2 
union all 
SELECT * FROM some_table WHERE id = 1 
union all 
SELECT * FROM some_table WHERE id = 3 
union all 
SELECT * FROM some_table WHERE id = 5