sql - 如何从具有一对多关系的表中随机选择?
问题描述
我有Questions
表:
ID TEXT DISCIPLINE_ID
1 What is stack? 1
2 The biggest ocean is 1
我有一个Option
表格,其中包含一些问题的所有选项:
ID TEXT IS_CORRECT QUESTION_ID
1 It is data structure TRUE 1
2 It is game FALSE 1
3 I don't know FALSE 1
4 Atlantic FALSE 2
5 Pacific TRUE 2
6 Indian FALSE 2
我应该按学科和所有选项随机选择 15 个问题。这是我的尝试:
SELECT Q.ID, Q.TEXT, O.ID, O.TEXT, O.IS_CORRECT
FROM (
SELECT ID, TEXT
FROM QUESTION
WHERE DISCIPLINE_ID = 1
ORDER BY RANDOM() LIMIT 15
) Q
JOIN OPTION O ON O.QUESTION_ID = Q.ID;
我选择了该学科的所有随机 15 个问题。然后,我加入了他们的选择。但它不起作用。因为,每个问题我有 3 个选项,我应该从上面的查询中得到 45 (3*15) 行。但有时我得到 30 行,有时是 33 行。换句话说,我的查询无法正常工作。我的错误在哪里?
解决方案
问题可能出在数据本身。如果您在某个学科中的Q 数少于 15,那么您将获得少于 45 条此 DISCIPLINE_ID 的记录。首先检查您的数据。
推荐阅读
- bash - 如何在 Windows 中从终端打开 sublime 文本?
- typescript - AWS CDK TypeScript 功能问题
- git - 使用 Git bash 访问生成的 SSH 密钥
- artifactory - OSS Maven - 从 Bintray 过渡
- elasticsearch - 努力理解 Elasticsearch Kuromoji 标记器中的用户字典格式
- c# - 获取视图在屏幕上的位置
- python - 将图像 ml 模型上传到烧瓶应用程序但出现错误
- java - 迭代地在数组中添加值并替换值
- c - 如何使用 C 最好地解析文件中的注释行
- c# - 如何在 C# 中连接到 gitlab API