首页 > 解决方案 > 如何使用 LIMIT 从 MYSQL 中选择数据包含一个具有值的元素,例如。1

问题描述

我有一些测试问题的答案列表。每个测试只有一个答案是正确的。如何从 mysql 中选择一个正确的答案,例如 3 个答案。答案是随机的

SELECT answer FROM answers WHERE correct='true' ORDER BY RAND() LIMIT 3

标签: mysqlsql

解决方案


使用UNION ALL和子查询将有助于获得您的预期结果。

以下查询将对您的情况有所帮助:

SELECT Answer FROM (
    SELECT * FROM (
        SELECT Answer, 1 AS ManualOrder FROM Answers WHERE Correct = 'true' AND QId = 1
        UNION ALL
        SELECT Answer, RAND() FROM Answers WHERE Correct != 'true' AND QId = 1 
    ) AS Q 
    ORDER BY ManualOrder DESC LIMIT 3
) W ORDER BY RAND()

请在 db<>fiddle 上找到演示

在我的演示中,Answer 04问题 id 的正确答案1在结果集中Answer 04总是与其他 2 个答案一起以随机顺序返回。


推荐阅读