sql - SQL扫描数据库中的先前记录

标签 sql sqlite

考虑表

          Index    Col_1    Col_2   Value_of_Interest
Record_1    1
Record_2    2
   .
   .
   .
Record_N    N


我想选择记录集{Record_i},以使Col_1中的Record_i+1出现在{SELECT Col_2 FROM table WHERE Index<i}

例如,考虑表

          Index    Col_1    Col_2   Value_of_Interest
Record_1    1       Ed      Bill           1
Record_2    2      James    Rob            0
Record_3    3       Tom     Rob            1
Record_4    4      Bill     Rob            0


查询将返回

          Index    Col_1    Col_2   Value_of_Interest
Record_3    3       Tom     Rob            1


由于Col_1Record_4Bill,并且包含在先前记录的Col_2中。

是否可以编写执行此操作的SQL查询?

最佳答案

SELECT *
FROM MyTable AS T1
WHERE (SELECT Col_1
       FROM MyTable AS T2
       WHERE T2.Index = T1.Index + 1
      ) IN (SELECT Col_2
            FROM MyTable AS T3
            WHERE T3.Index < T1.Index)

关于sql - SQL扫描数据库中的先前记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18642307/

相关文章:

sql - Oracle 11 SQL : Split 1 row into x rows and insert a new column

sql - Access 拒绝使用链接表运行查询?

android - 使用android在sqlite数据库中插入和检索图像数据的问题

sqlite - sqlite和批处理文件

sqlite - 如何使用 dapper 连接到 sqlite 数据库?

sql - 如何按日期分组并获取时间/如何获取记录 Oracle 的第一次出现

sql - 在 PostgreSQL 中组合两个 SELECT 查询

sqlite - 在sqlite中使用group by时选择某行的rowid

c# - 数据库插入性能

sql - 如何从 X 开始向 SQL-SERVER 中的表添加自动递增 ID 字段