| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2481 人关注过本帖
标题:关于在SQL中查询第N条记录
取消只看楼主 加入收藏
梦幻倩影
Rank: 5Rank: 5
等 级:职业侠客
威 望:8
帖 子:162
专家分:352
注 册:2016-8-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
关于在SQL中查询第N条记录
declare @n int
 set @n=5
 drop table #temp
 select identity(int,1,1) as id,* into #temp from cpkhdm1 ;
 select * from #temp where id between @n and @n

上面两条语句可以,但想改成一条语句却出错:
 select top 1 [款号],[图片],[myId] from [dqgl2016].[dbo].[cpkhdm1] where [myid] not in (select top @n [myid] from [dqgl2016].[dbo].[cpkhdm1])
好象不能用变量n,改为常数又可以,为什么
 select top 1 [款号],[图片],[myId] from [dqgl2016].[dbo].[cpkhdm1] where [myid] not in (select top 5 [myid] from [dqgl2016].[dbo].[cpkhdm1])
搜索更多相关主题的帖子: identity between where 记录 
2016-09-13 21:24
梦幻倩影
Rank: 5Rank: 5
等 级:职业侠客
威 望:8
帖 子:162
专家分:352
注 册:2016-8-19
收藏
得分:0 
还是经验重要啊,昨晚自己弄了一晚上都搞不定 ,原来如此简单,在sql2008中只需加个( )

另外在sql2000中刚才测试了declare @n int,@strSql varchar(1000)
set @strSql='select top '+convert(varchar,@p)+' * from 表名'
exec @strSql
会出错,提示找不到存储过程@strSql
要改为exec (@strSql)才OK
2016-09-14 10:05
梦幻倩影
Rank: 5Rank: 5
等 级:职业侠客
威 望:8
帖 子:162
专家分:352
注 册:2016-8-19
收藏
得分:0 
查询第N条记录 sql2008正确语句:
declare @n int
set @n=5
select top 1 [款号],[图片],[myId] from [dqgl2016].[dbo].[cpkhdm1] where [myid] not in (select top (@n-1) [myid] from [dqgl2016].[dbo].[cpkhdm1])
2016-09-14 10:12
梦幻倩影
Rank: 5Rank: 5
等 级:职业侠客
威 望:8
帖 子:162
专家分:352
注 册:2016-8-19
收藏
得分:0 
定义了一个存储过程,然后,查 首记录,前一条,后一条,最后一条  只要控制改变参数 n(全局变量) 全搞定
CREATE PROCEDURE check1
@n int
AS
BEGIN
  SET NOCOUNT ON;
  declare @i int
 select @i =count(*) from cpkhdm1
    if @i<@n
       begin
         set  @n=@i
       end   
   select top 1 款号,图片,myId from dbo.cpkhdm1 where myid not in (select top (@n-1) myid from dbo.cpkhdm1);
   SET NOCOUNT Off;
 END

2016-09-14 16:51
快速回复:关于在SQL中查询第N条记录
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018125 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved