如何从postgres中的查询生成子集?

时间:2013-10-28 19:58:24

标签: mysql sql postgresql

我需要给定查询的元组子集。例如,如果我需要查找超过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作为答案的唯一组合。

1 个答案:

答案 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()代替。