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.


0ktay adlı üyeden alıntı

Anladığım kadarıyla bişeyler karaladım ama :)



$sql = mysql_query("select sutun_adi from tablo_adi");
while($sonuc = mysql_fetch_row($sql) ){
echo $sonuc[0]; // birinci değer sabit
$oktay = rand(1,3); // $a değişkenine her döngüde 1 ile 3 arasında dönüyor eğer senin değerin 1 ila 3'ten fazla ile 3' yerine count ile veriyi saydırabilir değişkene atayıp 3'ün yerine yazabilirsin verdiğin sayıya göre değer döndürecektir.
echo $sonuc[$oktay];
}
// eğer sütunda 3'den fazla satır varsa döngüyü 3 ile sınırlandırmalısın.


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.