2010-02-27 17 views
10

IN kullanarak bir tablodan bir dizi satır seçtiğimde, ör.MySQL sonuçlarını IN dizisine göre mi sipariş ediyorsunuz?

SELECT x.y, x.z FROM x WHERE x.id IN (23, 55, 44, 12) 

geri İÇİNDE setinde verilen sırayla onları almak için bir SQL hile var mı? Örnekte, x'in 23, 55, 44 ve 12 ids ile satırları olduğu varsayıldığında, bu dört satır bu sırayla döndürülecektir.

cevap

12
SELECT x.y, x.z FROM x WHERE x.id IN (23, 55, 44, 12) 
ORDER BY FIELD (x.id, 23, 55, 44, 12) 
+0

MySQL 5,0 ORDER BY FIELD desteklenmektedir? A: Evet öyle! Az önce kontrol ettim. –

4

Sen olarak FIND_IN_SET kullanabilirsiniz: Onun karşısında

SELECT x.y, x.z FROM x WHERE x.id IN (23, 55, 44, 12) 
ORDER BY FIND_IN_SET(x.id,'23, 55, 44, 12'); 
+1

, Cevabınız ve Steve arasında seçim yapmak bir şey yok. Ama kabul etmek ister misiniz? Ben denedim basit bir testte, FIYAT BY FIELD iki kat daha hızlı olarak –

İlgili konular