mysql - 如何使用 LIMIT 从 MYSQL 中选择数据包含一个具有值的元素,例如。1
问题描述
我有一些测试问题的答案列表。每个测试只有一个答案是正确的。如何从 mysql 中选择一个正确的答案,例如 3 个答案。答案是随机的
SELECT answer FROM answers WHERE correct='true' ORDER BY RAND() LIMIT 3
解决方案
使用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 个答案一起以随机顺序返回。
推荐阅读
- php - Laravel Passport 通过网络问题使用自己的 API
- reactjs - 有条件地渲染 DataSearch 组件
- c# - 如何在VS2017的dot Net Core 2中使用通过连接服务创建的ASMX WebService接口
- r - 将 geom_text 与 geom_jitter 点对齐
- c - telnet 在发送数据时会添加任何额外的字节吗?
- r - 两个数据框之间的 R 中的 Google 距离
- django - Django - 向继承自父模型表单的模型表单添加字段?
- c - 来自 C 中 sendto() 套接字程序的无效参数
- c# - 我可以更改 iMacros 上的默认浏览器吗?
- r - 不允许使用日期滚动?