2014-02-18 29 views

回答

2

在关系数据库中不存在“第三”的概念或“6”行除非可以定义排序次序。

假设你有一个列,通过它可以以定义一个排为“第三”,或“4”命令的结果,下面将用Postgres的工作:

select * 
from (
    select col1, col2, col3, 
     row_number() over (order by your_sort_column) as rn 
    from your_table 
) t 
where rn in (3,4,6); 

哪里your_sort_column是定义一个或多个行的那个。这可以是增量ID或时间戳列,用于存储插入或更新行的时间。

0

在MySQL中它可以如下完成:

SELECT * from 
(SELECT (@row := @row + 1) num, tab.* FROM your_table, (SELECT @row := 0) r 
ORDER by your_sort_column) t 
WHERE (num % 3) = 0 

我们已经使用了模运算符来获得行是在3

多看它在SQL小提琴工作:http://www.sqlfiddle.com/#!2/192b0/4

在PostgreSQL它可以完成如下:

select * 
from (
    select *, row_number() over (order by your_sort_column) as rn 
    from your_table 
) t 
where (rn % 3)=0 ; 

http://www.sqlfiddle.com/#!15/cc649/5

相关问题