[英]MySQL SELECT 3 random and one static row
我有一张选择题的答案表。 所以你有三列
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演示
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.