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检查一行中的值是不是在没有循环的下一行中的值之间的主要内容,如果未能解决你的问题,请参考以下文章