首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

怎么实现SQl查询一定数量的语句

2012-08-14 
如何实现SQl查询一定数量的语句?标题说不太清楚,我有一个表table1 “time,value”只有这两列。如果我想实现如

如何实现SQl查询一定数量的语句?
标题说不太清楚,我有一个表table1 “time,value”只有这两列。如果我想实现如下功能,该如何查询?
如果记录条数小于100,则返回所有记录。若记录条数大于100,例如200,则隔一个取一条记录。
查询中我不知道有多少条结果,所以也不知道到底应该隔多少个取一个记录。
不知道这样可不可以用查询语句实现?

[解决办法]

SQL code
IF ( SELECT COUNT(*)     FROM   table1   ) < 100     SELECT  *    FROM    table1ELSE     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 intselect @a=count(*) from tb if @a<=100select * from tbelse if @a>100select * from(select *,row=row_number() over(order by id) from tb) where row%(@a/100)=1
[解决办法]
SQL code
declare @Total intselect @Total=COUNT(1) from tbif @Total<=100begin    select * from tbendelse begin    ;with t    (        select             px=row_number()over(order by (select 1)),            *        from            tb    )    select         [time],        value    from        t    where        px%2=1end
[解决办法]
语句上可以实现,但效率极差!
建议还是直接在程序中实现。

比如在C语句中打开这个 select * from table1 ,可以先得到记录总数N,然后根据你的定义,算出间隔为或0,或1,或2。得到间隔X。
然后循环处理你的记录集,当 i++ % X ==0 的时候就输出记录即可。

热点排行