我有一张多项选择题的答案表。所以你有三列
ID 正确并回答。 ID 是自动递增的。正确是 0 或 1。0 表示错误答案,1 表示相反(正确答案)。
我需要以随机顺序选择 4 行(或者只是能够以随机顺序调用它们)3 行必须不正确,第 4 行必须正确。
这在单个查询中可能吗?
最佳答案
如果 answers
表中的行数相当少,那么您可以这样做
SELECT id, question_id, correct, answer
FROM answers
WHERE question_id = 1
AND correct = 1
UNION ALL
(
SELECT id, question_id, correct, answer
FROM answers
WHERE question_id = 1
AND correct = 0
ORDER BY RAND()
LIMIT 3
)
ORDER BY RAND()
注意: ORDER BY
中的 RAND()
是一个非常昂贵的操作
示例输出:
| ID | QUESTION_ID | CORRECT | ANSWER | |----|-------------|---------|----------| | 7 | 1 | 0 | answer7 | | 10 | 1 | 0 | answer10 | | 5 | 1 | 1 | answer5 | | 4 | 1 | 0 | answer4 |
这是 SQLFiddle 演示
关于php - MySQL SELECT 3 随机和一个静态行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22411764/