ウィンドウ関数でできないかなと思って試行錯誤しているうちに、サブクエリーの解法が出ていた。実際はデータベースの規模とか、1行目からの連続以外にも取得する必要があったりするだろうから、開始行のデータをまず取得して、同じデータかどうかの条件で絞り込んだ方が良いのかなと思ったりした。コストに合わせてdataにもインデックスいるだろうし、うーん。
[ ]で括った部分が、先に取得したひとまとまりとなる最初の行のデータ
SELECT id, data
FROM (
SELECT ROW_NUMBER() OVER (ORDER BY id) - 1 + [id] AS rownum, id, data
FROM t_test
WHERE id >= [id]
AND data = [data]
ORDER BY id
) a
WHERE rownum = id
ActivityPub対応ログ記録サービスを始めました。→https://notestock.osa-p.net/ ぶろるっく https://mastodon.blolook.osa-p.net/ フォローリンク http://followlink.osa-p.net/ X版ぶろるっく・ふぁぼるっくなどを作っていました。おすすめユーザーは分散SNSを始める上で、色々な方面への足がかりになりそうな方です。「Xからの転載にはURLをつけて欲しい会」会員。