如何从具有一对多关系的表中随机选择



我有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排。换句话说,我的查询不能正常工作。我的错误在哪里?

问题可能出在数据本身。如果你在某些学科中的少于15个Qs,那么你将获得少于45个该学科_ID的记录。首先检查您的数据。

最新更新