在SQL表中选择第2行和第3行

时间:2013-08-04 23:54:47

标签: sql

我目前正在开发一个新闻网站。 所以这就是问题所在。我想在TOP 3中选择第2和第3行。

SELECT TOP 3 * FROM News ORDER BY Date DESC; 

我想删除第1行,只返回第2行和第3行。

有人可以帮忙吗?

5 个答案:

答案 0 :(得分:1)

试试这个:

SELECT TOP 2 FROM
( SELECT TOP 3 * FROM News ORDER BY Date DESC ) xx
ORDER BY Date

SQLFiddle:http://www.sqlfiddle.com/#!3/dbb7e/5

答案 1 :(得分:1)

您也可以使用窗口函数来执行此操作:

select n.*
from (SELECT n.*, row_number() over (order by date desc) as seqnum
      FROM News n
     ) n
where n.seqnum >= 2 and n.seqnum <= 3;

我只是提供这个作为一般解决方案。您还可以使用dense_rank()而非row_number()确保从第二个日期(如果该日期有两个以上的项目)获取所有内容。

答案 2 :(得分:0)

如果你知道没有两个日期相同,你可以添加

where date not in (select max(date) from News)

或者,如果您知道第一项将具有rowid = 0,则可以查看rowid,例如,如果您创建了包含初始查询结果的临时表。

答案 3 :(得分:0)

我假设,你以某种方式通过按日期降序排序知道你的前3个新闻是什么。 因此,您应该将LIMIT子句与OFFSET [For sqlite]

一起使用
SELECT * FROM News ORDER BY Date DESC LIMIT 2 OFFSET 1;

答案 4 :(得分:0)

Select top 2 * from News cross apply (select top 3 from news order by date desc)x