Đây là một giải pháp sử dụng LAG
chức năng hoặc Oracle, cung cấp cho bạn quyền truy cập vào hàng trước đó.
Và, bạn chỉ nên lấy hàng 2 và 5 từ bảng của mình, theo yêu cầu bạn có, vì hàng 6 có end_no
là 224, không nhỏ hơn end_no
của row5 là 223
SELECT id, name, start_no, end_no
FROM (
SELECT id, name, start_no, end_no,
lag(start_no, 1, 0) over (order by id) prev_start_no ,
lag(end_no, 1, 0) over (order by id) prev_end_no
FROM test
)
WHERE start_no BETWEEN prev_start_no AND prev_end_no
AND end_no BETWEEN prev_start_no AND prev_end_no;