MySQL, iki sorgularda bunu yapmak için muhtemelen en kolay. İlk olarak, tablodaki satır sayısını almak:
SELECT COUNT(*) FROM MyTable;
Sonra rasgele satır almak için sorguyu hazırlamak:
SELECT ... FROM MyTable ORDER BY RAND() LIMIT ?;
Ardından hazırlanan sorgu yürütmek ve 10 bölü sayısının değerini göndermek.
Değil her sorunun bir tek sorgu tarafından çözülmesi gerekir.
İşte eski mysql uzantısı kullanmak için düzenlenmiş bir örnek PHP script bulunuyor.
<?php
// Get the total number of rows in the table.
$sql = "SELECT COUNT(*) FROM Kingdoms";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
$rows_in_table = $row[0];
// We only want a portion of the rows, specified by the user
// choice of percentage. The count we want is therefore equal
// to the total number of rows in the table multiplied by the
// desired percentage.
$percentage = intval($_GET["percentage"]) / 100.0;
$count = intval(round($rows_in_table * $percentage));
// LIMIT makes the query return at most the number of rows specified.
// Sort randomly first (if the table has too many rows this will be slow),
// then return the first $count rows.
$sql = "SELECT * FROM Kingdoms ORDER BY RAND() LIMIT {$count}";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
print_r($row);
}
PS: Bir SQL ifadesi içine bir değişken interpolating her zaman dikkatli olun. Bilinen bir biçime değişken zorlamak gerekir - bu durumda bir tamsayı değeri. Aksi takdirde, bir SQL Injection güvenlik açığı oluşturma riski.