您的位置:首页 > 数据库

sql查询选择表中从10到15的记录

2010-03-04 08:29 302 查看
ORDER BY 子句按一列或多列(最多 8,060 个字节)对查询结果进行排序。有关 ORDER BY 子句最大大小的详细信息,请参阅 ORDER BY 子句 (Transact-SQL)。

Microsoft SQL Server 2005 允许在 FROM 子句中指定对 SELECT 列表中未指定的表中的列进行排序。ORDER BY 子句中引用的列名必须明确地对应于 SELECT 列表中的列或 FROM 子句中的表中的列。如果列名已在 SELECT 列表中有了别名,则 ORDER BY 子句中只能使用别名。同样,如果表名已在 FROM 子句中有了别名,则 ORDER BY 子句中只能使用别名来限定它们的列。

排序可以是升序的 (ASC),也可以是降序的 (DESC)。如果未指定是升序还是降序,就假定为 ASC。

SELECT
[USER_ID],[USER_NAME],[USER_EMAIL],[USER_PASSWORD]
FROM users where [USER_EMAIL] is not null and [USER_PASSWORD] is not null

--说明:选择从11到15的记录

select top 5
[USER_ID],[USER_NAME],[USER_EMAIL],[USER_PASSWORD]
from (select top 15 [USER_ID],[USER_NAME],[USER_EMAIL],[USER_PASSWORD] from users
order by [USER_ID] asc) users2
where [USER_EMAIL] is not null and [USER_PASSWORD] is not null order by [USER_ID] desc


上述语句

(select top 15 [USER_ID],[USER_NAME],[USER_EMAIL],[USER_PASSWORD] from users
order by [USER_ID] asc) users2


表示将前数据库的前15条记录按升序排列,存放在别名为user2的表中。

然后再通过

select top 5




order by [USER_ID] desc


这里两条语句来选择出第11-15条记录。上述order by [USER_ID] desc是将原先查询的15条记录逆序排列,然后通过top5选择逆序后的前五5记录,所以最后结果是从第15-11条的记录。

更新

如下查询代码所示,我们可以看到有一行的where被注释了,这是因为在全面的查询集中已经去掉了不符合要求的内容了,后面就不需要再用where来限定。代码注释还给出了首末数的计算方法。

--第二个数-第一个数+1开始,到第二个数位置
--从7001开始,到11828为止。得出第一个数,11828-x+1=7001,x=4828
SELECT   top 4828
'<User>'+
'<Username>' + [USER_NAME] + '</Username>',
'<Email>' + [USER_EMAIL] + '</Email>',
'<Password>' + [USER_PASSWORD] + '</Password>'  +
'</User>'
FROM (select top 11828 [USER_ID],[USER_NAME],[USER_EMAIL],[USER_PASSWORD] from users
where [USER_EMAIL] is not null and [USER_PASSWORD] is not null
and [USER_NAME] not LIKE '%&%'
order by [USER_ID] asc) users2
--where [USER_EMAIL] is not null and [USER_PASSWORD] is not null and [USER_NAME] not LIKE '%&%'
order by [USER_ID] desc
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: