Bạn có thể nhận 10 phần tử ngẫu nhiên cho mỗi loại với các truy vấn như sau:
select word from YOUR_TABLE where type = 'noun' order by rand() limit 10;
select word from YOUR_TABLE where type = 'adj' order by rand() limit 10;
và sau đó ghép chúng lại với nhau trong mã PHP của bạn, như sau:
$phrases = array();
$adj_result = mysql_query("SELECT word FROM words WHERE type = 'adj' ORDER BY RAND() LIMIT 10");
$noun_result = mysql_query("SELECT word FROM words WHERE type = 'noun' ORDER BY RAND() LIMIT 10");
while($adj_row = mysql_fetch_assoc($adj_result)) {
$noun_row = mysql_fetch_assoc($noun_result);
$phrases[$adj_row['word']] = $noun_row['word'];
}
print_r($phrases);
Xin lưu ý rằng mã này không an toàn lắm (nó tạo ra giả định rằng truy vấn thứ hai luôn mang lại ít kết quả nhất như truy vấn đầu tiên), nhưng bạn hiểu rõ.
Chỉnh sửa:Đây là một truy vấn SQL duy nhất nên thực hiện điều đó:
select t1.word, t2.word
from
((select word from YOURTABLE where type = 'adj' order by rand()) as t1),
((select word from YOURTABLE where type = 'noun' order by rand()) as t2)
order by rand()
limit 10;
CHỈNH SỬA:ví dụ đã loại bỏ