Mat*_*ell 1 html php mysql sql
如何从SQL数据库查询中随机选择一行?我的意思是:
从table1中选择所有类别为"green"的东西:
$stmt = $db->query('SELECT * from table1 WHERE Category LIKE "%green%"');
Run Code Online (Sandbox Code Playgroud)
然后从该选择中随机显示一行(而不是显示此选择中的每一行,如下所示)
while($rows = $stmt->fetch()){
echo "<tr><td>". $rows['Number'] . "</td><td>" . $rows['Content'] . "</td></tr>";
};
Run Code Online (Sandbox Code Playgroud)
在合理大小的数据集中,随机排序您的行并选择第一个:
...ORDER BY RAND() LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
您的陈述将成为:
$stmt = $db->query(
'SELECT * from table1
WHERE Category LIKE "%green%"
ORDER BY RAND() LIMIT 1;'
);
Run Code Online (Sandbox Code Playgroud)
如果在查询中缩小选择范围,则无需使用混乱的过程从PHP代码中的结果集中提取单行.
如果您的数据集非常大,请考虑按照Tobias Hagenbeek的建议执行多个查询:
COUNT() 匹配的行.COUNT().执行新查询以选择指定的行:
...LIMIT <random number>, 1;
最后,如果您只需要一个任意行并且随机性/唯一性不是问题,请考虑每次按照Gordon Linoff的建议从表中选择第一行:
...LIMIT 1;
Run Code Online (Sandbox Code Playgroud)