怎么实现SQl查询一定数量的语句
如何实现SQl查询一定数量的语句?
标题说不太清楚,我有一个表table1 “time,value”只有这两列。如果我想实现如下功能,该如何查询?
如果记录条数小于100,则返回所有记录。若记录条数大于100,例如200,则隔一个取一条记录。
查询中我不知道有多少条结果,所以也不知道到底应该隔多少个取一个记录。
不知道这样可不可以用查询语句实现?
------解决方案--------------------
标题说不太清楚,我有一个表table1 “time,value”只有这两列。如果我想实现如下功能,该如何查询?
如果记录条数小于100,则返回所有记录。若记录条数大于100,例如200,则隔一个取一条记录。
查询中我不知道有多少条结果,所以也不知道到底应该隔多少个取一个记录。
不知道这样可不可以用查询语句实现?
------解决方案--------------------
- SQL code
IF ( SELECT COUNT(*) FROM table1 ) < 100 SELECT * FROM table1 ELSE BEGIN ; WITH tmp AS ( SELECT * , rn = ROW_NUMBER() OVER ( ORDER BY GETDATE() ) FROM table1 ) SELECT * FROM tmp WHERE rn % 2 = 1 END
------解决方案--------------------
- SQL code
declare @a int select @a=count(*) from tb if @a<=100 select * from tb else if @a>100 select * from (select *,row=row_number() over(order by id) from tb) where row%(@a/100)=1
------解决方案--------------------
- SQL code
declare @Total int select @Total=COUNT(1) from tb if @Total<=100 begin select * from tb end else begin ;with t ( select px=row_number()over(order by (select 1)), * from tb ) select [time], value from t where px%2=1 end
------解决方案--------------------
语句上可以实现,但效率极差!
建议还是直接在程序中实现。
比如在C语句中打开这个 select * from table1 ,可以先得到记录总数N,然后根据你的定义,算出间隔为或0,或1,或2。得到间隔X。
然后循环处理你的记录集,当 i++ % X ==0 的时候就输出记录即可。