Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL在一个查询中选择具有唯一行的随机行_Php_Mysql_Sql - Fatal编程技术网

Php MySQL在一个查询中选择具有唯一行的随机行

Php MySQL在一个查询中选择具有唯一行的随机行,php,mysql,sql,Php,Mysql,Sql,是否可以从表中选择x个随机行,其中一行必须是一个查询中的特殊行(因此具有特殊字段值) $query = "SELECT * FROM answers WHERE ... whatever ... AND `question_id` IN (5, 9, 12, 16, 2) 基本上,我试图创建的是一个猜谜游戏,你有x个数量的问题,有x个数量的可能(复选框可选)答案 这就是我目前选择答案的方式。。。带2个查询 $answers = 4; // This is the max amount of a

是否可以从表中选择x个随机行,其中一行必须是一个查询中的特殊行(因此具有特殊字段值)

$query = "SELECT * FROM answers WHERE ... whatever ... AND `question_id` IN (5, 9, 12, 16, 2)
基本上,我试图创建的是一个猜谜游戏,你有x个数量的问题,有x个数量的可能(复选框可选)答案

这就是我目前选择答案的方式。。。带2个查询

$answers = 4; // This is the max amount of answers
//仅用于测试问题_id是手动设置的

$query = "SELECT * FROM `answers` WHERE `question_id` = 0 AND `correct` != 1 ORDER BY RAND() LIMIT " . ($answers - 1) . "";
$query = "SELECT * FROM `answers` WHERE `question_id` = 0 AND `correct` = 1 LIMIT 1";
“问题id”表示我们正在讨论的问题,“正确”表示该字段是否为正确答案

那么,在一个查询中,是否可以从一个表中选择x个随机行,其中一行必须是“正确的一行”

$query = "SELECT * FROM answers WHERE ... whatever ... AND `question_id` IN (5, 9, 12, 16, 2)
因此,首先找到行数,然后将正确答案的ID放入
WHERE in
语句中。因为您知道所需的ID,所以可以使用表中的随机ID将其包围,然后以随机方式呈现它们。

可以使用联合

$answers = 4;

$query = "SELECT * FROM `answers` WHERE `question_id` = 0 AND `correct` != 1 ORDER BY RAND() LIMIT " . ($answers - 1) . "";

$query .= " UNION ";

$query .= "SELECT * FROM `answers` WHERE `question_id` = 0 AND `correct` = 1 LIMIT 1";
只需一次查询,您就可以得到所需的结果


您是否尝试使用UNION子句?不,我不知道答案的id,我只知道问题id和我想要返回的行数(答案),然后在存在的行数内生成随机数,因此您希望我进行另一个查询,检查存在的行数,然后。。。好吧,这并没有使它成为唯一的一个查询?该死,这给了我这个错误。。。UNION和ORDER BYOhh的用法不正确每个“查询”周围都需要有括号