1

我正在尝试编写一个将返回一个问题及其所有相应答案的 sql 语句。在下面的示例中,我对它进行了硬编码,subject_id但它会被动态设置。

我想将结果限制为只有 5 个问题,但如果我只是添加LIMIT 5它,则将返回的整个数据限制为 5,这不是我想要的。

SELECT q.id,q.question,a.question_id,a.answer, a.correct
FROM questions q
JOIN answers a ON q.id = a.question_id
WHERE q.subject_id = 18 
GROUP BY q.id,a.id

我还想实现其他目标,但我不确定在业务逻辑(php)中实现它是否会更好。我想返回每个问题的正确答案(a.correct = 1)加上随机的 3 个错误答案(正确 = 0)。

4

1 回答 1

2

对于第一个问题:您需要LIMIT在子查询中分别将 应用于问题表。

  SELECT q.id,q.question,a.question_id,a.answer, a.correct
    FROM (SELECT * FROM questions q WHERE q.subject_id = 18
          ORDER BY RAND() LIMIT 5) q
    JOIN answers a on q.id = a.question_id
GROUP BY q.id, a.id
于 2012-04-17T00:54:40.520 回答