从结果集中取出 最后20条记录
我的意图是:
按时间 大--> 小 排序得到结果集(如果时间相同就按照ID 大--> 小 排序)。取出最后20条记录
下面两个方法是测试是正确的。
我想问问这两个写法是否完全一样?第二方法在子查询中加了ArticleId DESC,会有不同吗?? 我担心我的测试用例不够好,问问大家。
SELECT * FROM (SELECT TOP 20 * FROM Article ORDER BY AddTime ASC) T ORDER BY AddTime DESC,ArticleId DESC
SELECT * FROM (SELECT TOP 20 * FROM Article ORDER BY AddTime ASC,ArticleId DESC) T ORDER BY AddTime DESC,ArticleId DESC
------解决方案--------------------如何从表中用SELECT语句提取最后10条数据呢?
declare @num as int
select @num = count(*) from authors
set @num = @num - 20
declare @sql as varchar(200)
set @sql = 'select * from authors where au_id not in (select top ' + cast(@num as char) + ' au_id from authors) '
exec (@sql)