我需要sql(sqlite 3)来获取在已处理表中没有关联的未处理行。我检查了其他问题,没有发现任何与此场景相关的案例。请帮助以最少的查询量获得所需的结果。嵌套查询对我来说效果很好。
主表列: 身份证
已处理的表列: record1_id(主表id的外键),record2_id(主表id的外键)
我想从主表中获取两条尚未一起处理的记录。
然后我处理这两条记录,并在已处理表中插入条目,记录 1 的 id 为 record1_id,记录 2 的 id 为 record2_id。
现在,当我从主表中选择接下来的两条记录进行处理时,我不希望已处理的记录出现在结果中
我尝试使用您提供的示例数据编写查询,请告诉我
我在已处理表(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。