我想取某一条记录最临近的4条记录,请大家帮给解决方案,谢谢

shoutor 2006-12-18 04:43:47
比如:

现在有编号为1、2、3、4、5、6、7、8、9、10的十条记录
与1最临近的记录为:2、3、4、5
与4最临近的记录为:2、3、5、6
与10最临近的记录为:6、7、8、9

我现在最笨的办法是一个一个对比,然后在union,请各位给一个最简便的方法
...全文
159 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoliangwh 2006-12-18
  • 打赏
  • 举报
回复
xuexile
WNASP 2006-12-18
  • 打赏
  • 举报
回复
declare @count int
declare @id int
set @id=10
select @count=count(b.id) from test a
inner join test b on abs(a.id-b.id)>0 and abs(a.id-b.id)<=2
where a.id=@id
if @count=2
set @count=4
else if @count=3
set @count=3
else
set @count=2


select * from test a
inner join test b on abs(a.id-b.id)>0 and abs(a.id-b.id)<=@count
where a.id=@id
Eddie005 2006-12-18
  • 打赏
  • 举报
回复
即利用数据库里求绝对值的函数
Eddie005 2006-12-18
  • 打赏
  • 举报
回复
是的,偶刚才没看清题目

select top 4 from table1 where id<>4 order by ABS(id-4)
tianzhenjing 2006-12-18
  • 打赏
  • 举报
回复
你判断一下不就行了?

如果上面有二条并下面有两条,其他的怎么处理,跟分页一样
shoutor 2006-12-18
  • 打赏
  • 举报
回复
这个方法不行,一定要保证无论是哪个编号,都必须有4条记录(记录不足除外)
Eddie005 2006-12-18
  • 打赏
  • 举报
回复
select top 2 * from table1 where id >2 order by id
union
select top 2 * from table1 where id<2 order by id desc

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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