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
假设我有 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