我需要给定查询的元组子集。例如,如果我需要查找所有年龄超过 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] 等独特组合作为答案。
最佳答案
要获得“排列类型”,请使用 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()
代替。
关于mysql - 如何从 postgres 中的查询生成子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19643953/