Java 在一个循环中从mysql检索最后n行
下面是一个场景。 我有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条记录与上一次查询相同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
请帮忙 在表中添加一个字段,用于跟踪插入记录的时间
接下来,让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;