0

是否可以从表中选择 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 个随机行,其中一行必须是“正确的行”?

4

2 回答 2

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";

通过一个查询,您将能够获得所需的结果

http://dev.mysql.com/doc/refman/5.0/en/union.html

于 2013-07-14T03:40:43.087 回答
0
$query = "SELECT * FROM answers WHERE ... whatever ... AND `question_id` IN (5, 9, 12, 16, 2)

因此,您首先找到行数,然后将正确答案的 ID 放入WHERE IN语句中。因为你知道你想要的,你可以用表格中的随机 ID 包围它,然后以随机方式呈现它们。

于 2013-07-14T03:18:53.670 回答