(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.
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.