mysql查询用一个查询提取多个记录

时间:2013-04-08 13:06:53

标签: php mysql sql

这是我的表

id | question | 

id被分组为

1000 -> 1050
2000 -> 2030
3000 -> 3099
4000 -> 4500
5000 -> 5010

我必须为每组id提取5条记录和一条记录。

如何只使用一个查询执行此操作?

非常感谢。

3 个答案:

答案 0 :(得分:0)

SELECT f1, f2, ... FROM tablename WHERE id BETWEEN 1000 AND 1050 ORDER BY RAND() LIMIT 1
UNION
SELECTS f1, f2, ... FROM tablename WHERE id BETWEEN 2000 AND 2030 ORDER BY RAND() LIMIT 1
UNION
SELECTS f1, f2, ... FROM tablename WHERE id BETWEEN 2000 AND 2030 ORDER BY RAND() LIMIT 1

还有两个选择UNION

答案 1 :(得分:0)

SELECT *, IF (id > 1000 AND id < 1050, 1, 
          IF (id > 2000 AND id < 2030, 2,
          IF (id > 3000 AND id < 3099, 3,
          IF (id > 4000 AND id < 4500, 4,
          IF (id > 5000 AND id < 5010, 5, 0))))) AS param 
FROM questions WHERE param > 0 GROUP BY param

答案 2 :(得分:0)

要仅使用一个查询执行此操作(不使用NedretRecap建议的UNION),您可以将group_id(或类似列)添加到表中并使用简单{{ 1}}。

假设保留的组大小 总是相同(某些组不可能从前一个... GROUP BY group_id开始,而另一个组在{{ 1}})你可以使用这个简单的黑客:

+1000

工作示例here