SQLite检查一行中的值是否在下一行的值之间而没有循环

Sqlite checking if value in one row is between values in next rows without loop

假设我有 sql table 这样的:

id |  val_1 | val_2 | 
1  |  50    |  130  | -
2  |  70    |  110  | False
3  |  60    |  135  | True
4  |  40    |  70   | True

...

现在,我想检查是否(val_1 50 介于 70 和 110 之间)或(val_2 130 介于 70 和 110 之间),结果为 False,下一行给出真正的 130 介于 60 和 135 之间,依此类推。 window 函数可以吗?

您可以使用 lag 函数获取上一行:

SELECT id, val_1, val_2,
       LAG(val_1) OVER (ORDER BY id ASC) BETWEEN val_1 AND val_2 OR
       LAG(val_2) OVER (ORDER BY id ASC) BETWEEN val_1 AND val_2
FROM   mytable