限制组数据

时间:2012-04-17 00:51:50

标签: mysql group-by limit

我试图编写一个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)。

1 个答案:

答案 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