我试图编写一个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)。
答案 0 :(得分: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