答案 0 :(得分:1)
窗口函数(在Sqlite 3.25中添加,因此以下需求或更高版本)使轻松查看下一行成为可能:
创建并填充示例表(发布数据的图像确实没有用;最好使用INSERT语句或CSV文本)
CREATE TABLE seq(num INTEGER PRIMARY KEY, value INTEGER);
INSERT INTO seq VALUES (1, 111), (2, 555), (3, 222), (4, 444), (5, 333)
, (6, 111), (7, 555), (8, 222), (9, 111), (10, 333)
, (11, 555), (12, 444), (13, 111), (14, 333), (15, 444);
查询:
WITH leads AS (SELECT num, value
, lead(value, 1) OVER (ORDER BY num) AS next1
, lead(value, 2) OVER (ORDER BY num) AS next2
FROM seq)
SELECT CASE WHEN next1 = 222 AND next2 = 444 THEN 'MATCH' ELSE 'FAIL' END AS result
, num AS start
, CASE WHEN next1 = 222 AND next2 = 444 THEN num + 2 ELSE num + 1 END AS "end"
FROM leads
WHERE value = 555
ORDER BY num;
产生
result start end
---------- ---------- ----------
MATCH 2 4
FAIL 7 8
FAIL 11 12
(以上所有条件均假设您使用num
列来确定顺序)