取出mssqlserver中的取制定行

newuse 2004-12-29 09:37:34
例如表A中有N条记录(n是不确定的),这是我想取出前1到n/2的数据,该如何处理,还请各位指导一二,谢谢
...全文
95 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2004-12-29
  • 打赏
  • 举报
回复
--如果没有主键
--1~n/2
select top 50 percent * from 表

--n/2+1~n
declare @i int
select * into #t from 表
set @i=@@rowcount/2
set rowcount @i
delete from #t
select * from #t
drop table #t
zjcxc 2004-12-29
  • 打赏
  • 举报
回复
--假设id为主键

--1~n/2
select top 50 percent * from 表

--n/2+1~n
select * from 表 where id not in(select top 50 percent id from 表)

NinGoo 2004-12-29
  • 打赏
  • 举报
回复
假设你table中有一个为id的自增列(没有可以先alter table加一个)

--取前一半记录
select top 50 percent * from table1

--取后一半记录

select * from (select top 50 percent * from table1 order by id desc) a order by id
newuse 2004-12-29
  • 打赏
  • 举报
回复
需求我只写了一半,我需要对半取出数据,取出N/2后我还要取出N/2+1 到N的数据
TTLOVEYOU3344 2004-12-29
  • 打赏
  • 举报
回复
declare @liu int
declare @zhan varchar(100)
select @liu= count(*)/2 from inv10100
select @zhan='select top '+cast(@liu as varchar(5))+' * from inv10100'
exec (@zhan)
方法是笨了點,是因為他們搶樓了
NinGoo 2004-12-29
  • 打赏
  • 举报
回复
top 50 percent也可以,一下没想起来,呵呵
NinGoo 2004-12-29
  • 打赏
  • 举报
回复
declare @n int
declare @sql varchar(1000)
set @n=1000 --你需要传入的n值
set @n=@n/2
set @sql='select top '+@n+' * from table1'

exec (@sql)
skywebnet 2004-12-29
  • 打赏
  • 举报
回复
同意楼上的
zjcxc 2004-12-29
  • 打赏
  • 举报
回复
使用 TOP 和 PERCENT 限制结果集
TOP 子句限制返回到结果集中的行数。

TOP n [PERCENT]

n 指定返回的行数。如果未指定 PERCENT,n 就是返回的行数。如果指定了 PERCENT,n 就是返回的结果集行的百分比
zjcxc 2004-12-29
  • 打赏
  • 举报
回复
--1~n/2,那就是前50%的记录,用下面的语句就行了

select top 50 percent * from 表

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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