srhtycl adlı üyeden alıntı

Doğru anladıysam aynı tablodan 4 satır veri döndürmek istiyorsunuz. Bu 4 veriden birinde sütun değerini siz veriyorsunuz ve ona göre satır gelmesini istiyorsunuz. Diğer 3 satırı ise girilen değerlere göre random getirmeyi istiyorsunuz.


(SELECT * FROM tableName WHERE columnName = $deger1 LIMIT 1)
UNION
(SELECT * FROM tableName WHERE columnName = $deger2 ORDER BY RAND() LIMIT 3)



Yazdığım sorgu max 4 satır döndürür.

UNION'dan öncesi sabit değeriniz içindir. Örnek vermek gerekirse "ad" sütununda "ahmet" değerini aratıp varsa o satırı çekmiş olursunuz.
UNION'dan sonrası ise max 3 değer döndürür. Örnek vermek gerekirse "ad" sütunundaki değeri "mehmet" olan satırlardan 3 tane random satır döndürmeye çalışır.




Yalnız önerdiğiniz çözüm çok sıkıntılı olmuş. 1 Milyon satırı olan tablonun gerçekten tamamını çekmek istemezsiniz. Nacizane önerim, söz konusu yapısal bir veritabanı olduğunda olabildiğince indexlerle çalışmanızdır.


Teşekkürler srhtycl sql tarafında biraz zayıfım geliştirmeye devam :)
Kimse cevap yazmayınca bişeyler karalamak istedim :)