Sqlite检查一行中的值是不是在没有循环的下一行中的值之间
Posted
技术标签:
【中文标题】Sqlite检查一行中的值是不是在没有循环的下一行中的值之间【英文标题】:Sqlite checking if value in one row is between values in next rows without loopSqlite检查一行中的值是否在没有循环的下一行中的值之间 【发布时间】:2022-01-21 16:41:50 【问题描述】:假设我有这样的 sql 表:
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,而给出 True 的下一行 130 在 60 和 135 之间等等在。窗口函数可以吗?
【问题讨论】:
【参考方案1】:可以使用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
【讨论】:
以上是关于Sqlite检查一行中的值是不是在没有循环的下一行中的值之间的主要内容,如果未能解决你的问题,请参考以下文章