SELECT TOP 每页数 * FROM (SELECT TOP xxx(计算的前x+1页记录数) * FROM 表 ORDER BY 排序字段 DESC) AS t1;
[/Quote]
“计算的前x+1页记录数”的意思是第二页的时候把一+二两页的记录都检索出来?
那在外面还是TOP 每页数,不还是第一页的内容吗?
select top 27 url from Url_T order by addtime desc
这里这样的话...会返回所有的记录..order by一个非主键的话..不知道为什么会返回所有的记录..
不是返回27条 而我试过order by主键的话可以可以返回前27条记录 大家知道什么原因不?
[Quote=引用 1 楼 daniel75122 的回复:]
select top 27 url from Url_T order by addtime desc是整个查询语句中的一个子查询,逻辑过程是:首先查询出Url_T表中的所有url字段值,并按相应的addtime的值来进行降序排序,排序以后,再返回最前面(或称最顶部)的27个记录。然后将这个字查询的结果命名一个临时表名t。最后再从这个临时表中查询返回最前面的27个记录。
select top 27 url from Url_T order by addtime desc是整个查询语句中的一个子查询,逻辑过程是:首先查询出Url_T表中的所有url字段值,并按相应的addtime的值来进行降序排序,排序以后,再返回最前面(或称最顶部)的27个记录。然后将这个字查询的结果命名一个临时表名t。最后再从这个临时表中查询返回最前面的27个记录。
因为临时表中最多也就27个记录。所以这个查询语句使用子查询虽然没有错误,但是毫无意义。因为仅它的子查询就已经达到目的了。
即SELECT TOP 27 * FROM (select top 27 url from Url_T order by addtime desc) AS t
等同于select top 27 url from Url_T order by addtime desc