如何根据键从表中选择一组随机行?
我知道SQL中的RAND()
函数用于从表中选择随机行,但问题是我不希望每次刷新浏览器时都选择不同的随机行。我想要一组随机的行,这是根据一个键选择的。如何根据键从表中选择一组随机行?
例如,说这是我的表:
----------------------
| id | word | literal|
----------------------
| 1 | say | YAS |
----------------------
| 2 | eat | TAE |
----------------------
| 3 | hit | TIH |
----------------------
| 4 | bad | DAB |
----------------------
| 5 |delve | EVLED |
----------------------
也许,如果其中的关键是6,它会选择行4 & 5每次。但是,如果密钥是3,它会选择第2行和第5行。因此,每次都会根据密钥选择一组随机行。
这可能吗?
与md5哈希好想,但有一个更简单的方法来做到这一点。不管你想要什么,都可以生成你的随机数,并使用超全局的$_SESSION
来存储数字。
例子:
session_start();
if(!isset($_SESSION["randomNumber"])){
$_SESSION["randomNumber"] = generateRandomQuery();
}
你会那么可以使用数量,当你建立你的查询。使用PDO,它会是这样的:
$number = $_SESSION["randomNumber"];
$query = $database->prepare("SELECT id FROM *databaseName* where id = :id");
$query->execute(array(":id" => $number));
我将如何使用该随机数字? – think123 2012-07-16 01:26:25
不,我的意思是如何在SQL查询中实现它。 – think123 2012-07-16 01:29:23
新增数据库位。 – SomeKittens 2012-07-16 01:32:45
的想法..
保存行ID在会话/饼干,
$var = value from $_SESSION/cookie
if (isset($var)){
$sql = select RAND...
} else {
$sql = select ..... where row = $var
}
什么,你的代码似乎没有工作...'如果isset($ var){...}其他{//$ var不存在,并且您正在使用它}' – think123 2012-07-16 01:27:18
抱歉..愚蠢的错误不应该为$ var设置。如果你将它保存在SESSION中,应该是$ _SESSION [$ var]。 – 2012-07-16 01:29:06
这是矛盾的;你想要一个随机选择,但每次都是一样的选择? – 2012-07-16 01:21:25
是的,所以我希望它根据一个键选择一组随机的行。 – think123 2012-07-16 01:21:49
然后你将不得不澄清;我不明白你的意思。 – 2012-07-16 01:22:28