我需要给定查询的元组子集。例如,如果我需要查找超过25的所有员工的列表并将其限制在最多5.我如何生成相同的子集?
# select * from employee where age > 25 ;
will list all the employee whose age is > 25
tupleid = { 1,2,3,4,5,6,7,8,9 }
#select * from employee where age > 25 limit 5 ;
will list any 5 tuples from it.
tupleid on first time execution = {1,2,3,4,5}
但我需要对我得到的5集元组进行某种排列 {1,2,3,4,5} {2,3,4,5,6} ..等等..
有没有办法在sql / postgres中生成相同的内容?
编辑1: 因为问题似乎一开始就很清楚。
我添加了一个示例表和我正在讨论的SQL查询。 sqlfiddle.com/#!2/69a0c/2如果你看到第二个查询的输出我只能看到[1,2,3,4,5]元组是答案。我想要[1,2,3,4,5],[1,2,3,4,6],[1,2,3,4,7]和soo作为答案的唯一组合。
答案 0 :(得分:1)
要获得“排列”,请使用OFFSET
:
SELECT *
FROM employee
WHERE age > 25
ORDER BY employee_id -- or whatever
OFFSET 1
LIMIT 5;
获取随机样本:
SELECT *
FROM employee
WHERE age > 25
ORDER BY random()
LIMIT 5;
Postgres的。在MySQL中,您可以使用RAND()
代替。