v3rb0, man šķiet Mārtiņa ideja ir citādāka.
Mārtiņ, gadījumā, ja tomēr daži id ir izdzēsti, tad tava sistēma varētu nostrādāt ar kaut ko šādu:
$a = rand(0,count(*)); SELECT * FROM tabula WHERE ID>=($a-5) AND ID<($a+5) LIMIT 1;
Tas gadījumā, ja maz ticams, ka 10 pēc kārtas ir izdzēsti.
Vēl cits variants: uzģenerēt N id (nu teiksim 20 gab) interesējošajā intervālā, jo maz ticams, ka neviens no šiem N id nebūs pieejams:
for($x=0;$x<20;$x++) $a[]=rand(0,count(*));
$vaicajums='SELECT * FROM tabula WHERE ID IN ('.implode(',',$a).') LIMIT 1';
protams, lai garantēti atgrieztu rezultātu, būtu tas viss jāieliek while ciklā un jādarbina tik ilgi, līdz sakrīt.
Ā, un vēl viens variants:
$a = rand(0,count(*)); SELECT * FROM tabula WHERE ORDER BY ID2 LIMIT $a, 1;