查询第n行数据

Andy-W 2006-05-15 10:49:33
下面是我写的一条查询第n行的记录,第1条查询:


SELECT * FROM TableName WHERE ID=(
SELECT A.ID FROM (Select Top n * From TableName) AS A
LEFT OUTER JOIN (Select Top n-1 * From TableName) AS B ON B.ID=A.ID
WHERE B.ID IS NULL )

当我去掉第一条语句SELECT,如第2条查询:

SELECT A.* FROM (Select Top n * From TableName) AS A
LEFT OUTER JOIN (Select Top n-1 * From TableName) AS B ON B.ID=A.ID
WHERE B.ID IS NULL

想象的结果会是第n条记录,但我错了,查询返回的结果是1到n条记录。
我再修改语句成,第3条查询:

SELECT A.* ,B.* FROM (Select Top n * From TableName) AS A
LEFT OUTER JOIN (Select Top n-1 * From TableName) AS B ON B.ID=A.ID
WHERE B.ID IS NULL
返回的是只是第n条记录,与我要的结果基本相似,但多了个B.* 呵呵

问大家,如何理解第2,3条查询语句??


...全文
159 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Andy-W 2006-05-16
  • 打赏
  • 举报
回复
上楼,那语句,你可能没有测试过吧。返回的结果根本不是第n条记录。
hyrongg 2006-05-15
  • 打赏
  • 举报
回复
select top 1 * from tablename where id not in(select top n-1 id from tablename)
Andy-W 2006-05-15
  • 打赏
  • 举报
回复
看到有个网友这样写:
select *
from (select top n * from yourtable) aa
where not exists(select * from (select top n-1 * from yourtable) bb where aa.id=bb.id)
但返回的结果也是1到n行记录,有时是n比较大的时候,只能返回1到m(m<n)条记录。

不解!!!

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧