繁体   English   中英

MySQL SELECT 3个随机行和一个静态行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM