2

在表中......(ID,NAME,EVENT)

数据:

(1,BOB,E)    
(2,JANE,B)    
(3,JOE,C)    
(4,TOM,A)   
(5,JANE,B)    
(6,JOE,C)    
(7,BEN,D)    
(8,TOM,B)    
(9,JANE,D)    
(10,JOE,A)    
(11,JANE,B)    
(12,BOB,C)    
(13,JOE,C)    
.    
.    
.

期望的输出:

(2,JANE,B)    
(3,JOE,C)    
(5,JANE,B)    
(6,JOE,C)

我试图列出 Jane,B 和 Joe,C 连续出现在表中的每个实例。使用 sqlite。

任何帮助将不胜感激。

4

1 回答 1

1

您可以使用标准 SQL 执行此操作,该标准也适用于 SQLite。这个想法是将给定的行连接到下一行和上一行,然后检查条件:

select t.*
from t join
     t tnext
     on tnext.id = t.id + 1 join
     t tprev
     on tprev.id = t.id - 1
where (t.name = 'Jane' and t.event = 'B' and tnext.name = 'Joe' and tnext.event = 'C') or
      (tnext.name = 'Jane' and tnext.event = 'B' and t.name = 'Joe' and t.event = 'C') or
      (t.name = 'Jane' and t.event = 'B' and tprev.name = 'Joe' and tprev.event = 'C') or
      (tprev.name = 'Jane' and tprev.event = 'B' and t.name = 'Joe' and t.event = 'C')
于 2012-11-27T03:41:27.063 回答