获取已处理表中没有关联的未处理行

问题描述 投票:0回答:1

如何使用最少数量的 SQLite 3 查询获取表

Processed
中没有关联的未处理行?

嵌套查询可以正常工作。

Main_Table
列:Id

Processed
列:
record1_id
(主表id的外键),
record2_id
Main_Table
的id的外键)

我想从

Main_table
获取两条尚未一起处理的记录。

然后我处理这两条记录,并在

Processed
中插入一个条目,其中 record1 的 id 为
record1_id
,record2 的 id 为
record2_id

然后,当我从

Main_Table
中选择接下来的两条记录进行处理时,我不想要已经处理过的记录。

sql sqlite join foreign-keys relational-database
1个回答
1
投票

我尝试使用您提供的示例数据编写查询,请告诉我

我在已处理表(1,2)中插入了一条记录,并且main_table包含(1,2,3)。

Fiddle 目前没有响应,所以我无法分享 fiddle 链接。

-- insert all 
--     into main_table(id) values(1)
--  into main_table(id) values(2)
--  into main_table(id) values(3)
-- select * from dual
-- ;

-- insert into processed values(1,2) ;

   SELECT m1.Id AS record1_id, m2.Id AS record2_id
FROM main_table m1
JOIN main_table m2 ON m1.Id != m2.Id
WHERE NOT EXISTS (
  SELECT 1
  FROM processed p
  WHERE 
    p.record1_id = m1.Id AND p.record2_id = m2.Id
   -- OR (p.record1_id = m2.Id AND p.record2_id = m1.Id)
  
)
;

输出如下所示,您可以看到输出中不存在 1,2。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.