Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
$n = rand()/getrandmax();
select * from table where id=round(0.744296810005*(select count(*) from table));
select * from table where id in (round(0.744296810005*10000), round(0.544296810005*10000),....);
mysql> SELECT `pk`, substr(`data`,1,20) FROM `test` ORDER BY RAND() LIMIT 1; +------+----------------------+ | pk | substr(`data`,1,20) | +------+----------------------+ | 1612 | ark2K9bS0NeHWk34ZDAc | +------+----------------------+ 1 row in set (0.15 sec) mysql> SELECT `pk`, substr(`data`,1,20) FROM `test` WHERE `pk` >= (SELECT FLOOR( MAX(`pk`) * RAND()) FROM `test`) ORDER BY `pk` LIMIT 1; +----+----------------------+ | pk | substr(`data`,1,20) | +----+----------------------+ | 48 | juuZeRXMUJxyp1GV8EZM | +----+----------------------+ 1 row in set (1.52 sec) mysql> SELECT `pk`, substr(`data`,1,20) FROM `test` WHERE `pk` >= (SELECT FLOOR( MAX(`pk`) * RAND()) FROM `test`) ORDER BY `pk` LIMIT 1; +-----+----------------------+ | pk | substr(`data`,1,20) | +-----+----------------------+ | 173 | qQOA1ptDKU9qrJTDzf2j | +-----+----------------------+ 1 row in set (5.35 sec)
mysql> select pk,substr(`data`,1,20) from test limit 10; +-------+----------------------+ | pk | substr(`data`,1,20) | +-------+----------------------+ | 1 | nA2XwySymLkX7Yy7RNUP | | 12876 | new | | 8 | MSWIuJzGdZl21DXSnA3l | | 9 | njcVy8iL7jtP5bGlCVwo | | 10 | zEf99WoNXZiSSQf9s8QS | | 11 | qgv8yyBsM3C2bImQ9YLs | | 12 | Y6jjudnvutqMardInwNy | | 13 | L4I30BhNBpYxyqNy0Lar | | 14 | a9nKmnPBGzxQs5kxjSpz | | 15 | BODaKjhmTziFTXjQXbrD | +-------+----------------------+ 10 rows in set (0.01 sec)
mysql> select pk,substr(`data`,1,20) from test where pk >= 9 limit 10; +----+----------------------+ | pk | substr(`data`,1,20) | +----+----------------------+ | 9 | njcVy8iL7jtP5bGlCVwo | | 10 | zEf99WoNXZiSSQf9s8QS | | 11 | qgv8yyBsM3C2bImQ9YLs | | 12 | Y6jjudnvutqMardInwNy | | 13 | L4I30BhNBpYxyqNy0Lar | | 14 | a9nKmnPBGzxQs5kxjSpz | | 15 | BODaKjhmTziFTXjQXbrD | | 16 | 6pKnrXAW431nKEzezPTM | | 17 | UuLA1t9NMopa5b2ZvOqT | | 18 | M7YxrpwekRcwTjYQHb3f | +----+----------------------+ 10 rows in set (0.00 sec)
for ( $i=0; $i<$z; $i++ ) {
$value .= $data[$rand_keys[$i]] . ',' ;
}
$result = $sql->query ("
SELECT reclama_code
FROM reclama
WHERE reclama_id IN (" . rtrim($value, ',') . ")
LIMIT $z
");В комментариях неоднократно указали как правильно.
$cntcache = 'current-state/laste';
if (file_exists($cntcache)){
$lastID = file_get_contents($cntcache);
} else $lastID = 0;
for($i = 0; $i < 2; $i++){
$lines = mysql_query( "SELECT id FROM table WHERE id > '$lastID' LIMIT 1");
if (mysql_num_rows($lines) != 0){
$line = mysql_fetch_row($anketes);
$lastID = $line[0];
break;
} else $lastID = 0;
}
file_put_contents($cntcache, $lastID);
Выборка произвольных записей в MySQL