0

records该查询从不早于给定日期的表中选择最旧的行。给定的日期是我从records_queue表中查询的最后一行。查询的目标是将行从旧行轮换到新行,每次为每个用户返回 1 行。

SELECT `records`.`record_id`, MIN(records.date_created) as date_created 
FROM (`records`) 
JOIN `records_queue` ON `records_queue`.`user_id` = `records`.`user_id` 
AND record_created > records_queue.record_date 
GROUP BY `records_queue`.`user_id`

因此,在每个查询中,我min(date_created)从 中选择最旧的行records并返回大于>给定日期的下一个最旧的行records_query。查询不断返回行,直到它到达最新的记录。此时返回同一行。如果到达最新的行,我想返回最旧的(从底部重新开始 - 一个完整的旋转)。使用 1 个查询怎么可能?

4

1 回答 1

1

从您发布的代码中,发生了两件事之一。此查询返回一个完整的记录集,然后您的应用程序可以使用它自己的逻辑遍历该记录集(如果页面没有重新加载或将参数传递给 PHP 代码,这可能是 JavaScript 的某种变体,然后用于选择哪个记录以显示页面是否每次都重新加载),或者应用程序正在更新records_queue.record_date以带回下一条记录-尽管我看不到在您发布的查询中仅获取一条记录的任何限制。

无论哪种方式,您都需要修改应用程序逻辑,而不是此查询来实现您要求的结果。

编辑:在更新队列的代码部分中,快速检查中的值records_queue.record_date是否等于最新记录。如果它运行类似的东西,update records_queue set record_date = (select min(theDateColumn from records)而不是当前的逻辑,它只是用正在查看的当前日期来更新它。

于 2012-08-09T00:44:26.047 回答