我有一个包含开始/停止时间戳的 sqlite 表。我想创建一个从那里返回总经过时间的查询。
现在我有一个 SELECT (例如SELECT t,type FROM event WHERE t>0 AND (name='start' or name='stop) and eventId=xxx ORDER BY t
),它返回一个看起来像这样的表:
+---+-----+
|t |type |
+---+-----+
| 1|start|
| 20|stop |
|100|start|
|150|stop |
+---+-----+
在上述示例中生成总经过时间将通过以下方式完成(20-1)+(150-100) = 69
我的一个想法是:我可以运行两个单独的查询,一个用于“开始”字段,一个用于“停止”字段,假设它们总是像这样排列:
+---+---+
|(1)|(2)|
+---+---+
| 1| 20|
|100|150|
+---+---+
(1) SELECT t FROM EVENT where name='start' ORDER BY t
(2) SELECT t FROM EVENT where name='stop' ORDER BY t
然后将差异相加很简单(我认为!)。唯一的问题是,我不知道我是否可以像这样连接两个单独的查询:我熟悉将每一行与其他行结合起来的连接,然后消除那些不符合某些条件的连接。在这种情况下,标准是行索引相同,但这不是数据库字段,它是两个单独选择的输出中结果行的顺序 - 我没有任何数据库字段可以用来确定这一点。
或者也许还有其他方法可以做到这一点?