Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在一个循环中从mysql检索最后n行_Java_Mysql - Fatal编程技术网

Java 在一个循环中从mysql检索最后n行

Java 在一个循环中从mysql检索最后n行,java,mysql,Java,Mysql,下面是一个场景。 我有2台PC客户端(客户端CA和CB)和1台MYSQL服务器(S1)。CA不断地在S1上生成和存储数据,CB从S1获取数据并用其生成图形 CB需要一直轮询S1中的记录,这就是为什么我在一个while循环中拥有它。如何检索循环中的最后n条记录,而不从以前的查询中获取重复项?。即 n=100 CA插入100条记录,CB获取最后100条记录 CA插入50条记录,CB获取最后100条记录。其中50条记录与上一次查询相同 请帮忙 在表中添加一个字段,用于跟踪插入记录的时间 接下来,让CB

下面是一个场景。 我有2台PC客户端(客户端CA和CB)和1台MYSQL服务器(S1)。CA不断地在S1上生成和存储数据,CB从S1获取数据并用其生成图形

CB需要一直轮询S1中的记录,这就是为什么我在一个while循环中拥有它。如何检索循环中的最后n条记录,而不从以前的查询中获取重复项?。即

n=100

CA插入100条记录,CB获取最后100条记录

CA插入50条记录,CB获取最后100条记录。其中50条记录与上一次查询相同


请帮忙

在表中添加一个字段,用于跟踪插入记录的时间


接下来,让CB客户端跟踪它检索到的最新时间步是什么,然后将其选择限制为仅比上次提取的时间更近的记录。

我假定您在“创建时间”列中存储了一些时间戳和数据:

和你的循环:

Date lastDate = some_very_old_date;
while(true) {
  rows = sql_query.getData(time_modified_on_every_iteration = lastDate);
  iter = rows.iterator()
  while (iter.hasNext()) {
    // do stuff with current row
    if(!iter.hasNext()) {
      // last cycle
      lastDate = iter.current.getCreate_time();
    }
  }
}

抱歉没有精确的语法,这是一个想法。

如果您有可能在同一秒钟内创建多个记录,我建议使用自动递增id而不是时间戳。然后,对于给出的时间戳示例,您可以简单地查询id大于上一个接收记录id的记录-

SELECT * FROM tbl WHERE id > last_received_id ORDER BY id ASC LIMIT 100;
SELECT * FROM tbl WHERE id > last_received_id ORDER BY id ASC LIMIT 100;