是否可以从表中选择x个随机行,其中一个行必须是一个查询中的特殊行(因此具有特殊字段值)?
基本上我想要创建的是一个猜测游戏,你有x个问题,有x个可能的(复选框可选)答案!
这是我当前选择答案的方式......使用2个查询
$answers = 4; // This is the max amount of answers
//仅用于测试,可手动设置question_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";
“question_id”告诉我们正在讨论哪个问题,“正确”只是告诉该字段是否正确答案
那么可以在一个查询中从表中选择x个随机行,其中一行必须是“正确的”吗?
答案 0 :(得分:1)
可以使用 UNION ?
$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";
只需一个查询,您就可以获得所需的结果
答案 1 :(得分:0)
$query = "SELECT * FROM answers WHERE ... whatever ... AND `question_id` IN (5, 9, 12, 16, 2)
因此,您首先找到行数,然后将正确答案的ID放入WHERE IN
语句中。因为你知道你想要的那个,你可以用表中的随机ID包围它,然后以随机方式渲染它们。