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 desctop关键字是返回符合条件的前面多少个记录行
1楼分析正确。这个SQL的写法是MSSQL的写法,MYSQL的写法是select * from (select url from Url_T limit 0,27 order by addtime desc) AS t
select top 27 url from Url_T order by addtime desc 这里这样的话...会返回所有的记录..order by一个非主键的话..不知道为什么会返回所有的记录.. 不是返回27条 而我试过order by主键的话可以可以返回前27条记录 大家知道什么原因不?
这种我常用于基于MSSQL的分页的.不太喜欢 使用存储过程进行分页.SO..SELECT TOP 每页数 * FROM (SELECT TOP xxx(计算的前x+1页记录数) * FROM 表 ORDER BY 排序字段 DESC) AS t1;
即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 desctop关键字是返回符合条件的前面多少个记录行
没有必要用嵌套selecturlfromUrl_T limit0,27orderbyaddtimedesc
这里这样的话...会返回所有的记录..order by一个非主键的话..不知道为什么会返回所有的记录..
不是返回27条 而我试过order by主键的话可以可以返回前27条记录 大家知道什么原因不?
那在外面还是TOP 每页数,不还是第一页的内容吗?
内嵌的 SELECT 是倒序的...