sql怎么每隔几条取一条数据

sql怎么每隔几条取一条数据,第1张

不知道你是什么数据库,如果是oracle,或者有rownum的话,那么可以用取余数的办法,比如想每隔5条取一条数据。

那么就先用rownum确定每行的号码,然后用每行的号码除以5,取余数,余数为1,2,3,4,0中你可以取任何一个,这样就等于是每个5个取一行了。

至于没有rownum的数据库,那么可能要通过id什么的来取了。

可能还有其他方式方法,不过暂时我还没有想到。

package com.lvjj.entity

import java.util.Date

import java.util.TimerTask

public class WrongTimerTask extends TimerTask {

private Date start //开始时间

public Date getStart() {

return start

}

public void setStart(Date start) {

this.start = start

}

public void run() {

//调用Dao层

if (true) {//DAO层满足条件

this.cancel()

}

Date d = new Date()//当前时间

try {

long t = d.getTime()- start.getTime() //当前时间减去开始时间

if(t==120000)//2分钟

this.cancel()//退出

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace()

}

}

}

------------------------上面是定时器

package com.lvjj.main

import java.util.Date

import java.util.Timer

import com.lvjj.entity.WrongTimerTask

public class Time {

/**

* @param args

*/

public static void main(String[] args) {

try {

WrongTimerTask task = new WrongTimerTask()

Timer timer = new Timer("TestTimer")

task.setStart(new Date())

timer.scheduleAtFixedRate(task, 0, 1000)

} catch (Exception e) {

e.printStackTrace()

}

}

}

-----------------------上面是测试执行类

你只要把定时器类的调用DAO层方法和Dao层满足的条件改一下就可以了

UPDATE t SET size = (size+2) DIV 5*5 WHERE size !=99

或者

UPDATE t SET size = FLOOR((size+2)/5)*5 WHERE size !=99

经测试通过。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9876403.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存