フォロー

ウィンドウ関数でできないかなと思って試行錯誤しているうちに、サブクエリーの解法が出ていた。実際はデータベースの規模とか、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

ログインして会話に参加
:realtek:

思考の /dev/null