我目前正在开发一个新闻网站。所以这就是问题所在。我想在 TOP 3 中选择第 2 行和第 3 行。
SELECT TOP 3 * FROM News ORDER BY Date DESC;
我想删除第一行,只返回第二行和第三行。
任何人都可以帮忙吗?
我目前正在开发一个新闻网站。所以这就是问题所在。我想在 TOP 3 中选择第 2 行和第 3 行。
SELECT TOP 3 * FROM News ORDER BY Date DESC;
我想删除第一行,只返回第二行和第三行。
任何人都可以帮忙吗?
您也可以使用窗口函数一般地执行此操作:
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()
.
尝试这个:
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
Select top 2 * from News cross apply (select top 3 from news order by date desc)x
如果您知道没有两个日期会相同,您可以添加
where date not in (select max(date) from News)
或者您可以查看rowid
您是否知道第一项的 rowid=0,例如,如果您使用初始查询的结果创建了一个临时表。
我假设,您通过按日期降序排序以某种方式知道您的前 3 条新闻是什么。因此,您应该使用带有 OFFSET [For sqlite] 的 LIMIT 子句
SELECT * FROM News ORDER BY Date DESC LIMIT 2 OFFSET 1;