2012-03-29 16 views
5

Şu anda bir MySQL veritabanı tablosundan bazı verileri alıyorum, ancak sorun her zaman sorgulandığında, varsayılan olarak MySQL sonucu otomatik olarak oluşturuluyor alan adı [id]. Sıralanmak istemiyorum. Benim durumumda:MySQL'in sonuçları sıralamasını istemiyorum

$keys = array(4, 1, 7, 8, 2, 5, 6); 
$strKeys = implode(',', $keys); 
$result = mysql_query('SELECT * FROM tableName WHERE id in('.$strKeys.')'); 

Ben $ tuşları neye benzediğini sırayla sonucu istiyorum: Gerçekten 4, 1, 7, 8, 2, 5, 6 ANCAK, sonuç ile sıralanmış sırayla çıkar [id]: 1, 2, 4, 5, 6, 7, 8

Sonuç nasıl alınır ve $ tuşlarından sırayla görüntülenir.

+0

Yapılacak en kolay şey, yalnızca diziye başvurmak veya (muhtemelen en iyisi) kimliğine göre indekslemek ve daha sonra döngü için $ tuşlarını kullanmak olacaktır. – Corbin

+1

Mümkün yinelenen [SELECT WHERE IN() kullanarak siparişi nasıl saklıyorsun?] (Http://stackoverflow.com/questions/2813884/how-do-you-keep-the-order-using-select-where- in) –

+0

Vay! Bu fonksiyonun olduğunu bilmiyordum. >. < – Corbin

cevap

9

Bunu deneyebilirsiniz.

SELECT * FROM tableName WHERE id in (4, 1, 7, 8, 2, 5, 6) order by find_in_set(id, '4, 1, 7, 8, 2, 5, 6'); 
+0

Evet, işe yarıyor! Çok teşekkürler. Bunu daha önce hiç tanımadım. – Thavarith

İlgili konular