クエリ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
大きい次の最も古い行を返します。クエリは、最新のレコードに到達するまで行を返し続けます。その時点で同じ行が返されます。最新の行に到達した場合は、最も古い行を返します(下からやり直します-1回完全に回転します)。1つのクエリを使用してそれをどのように可能にしますか?>
records_query