如何使用最少数量的 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
中选择接下来的两条记录进行处理时,我不想要已经处理过的记录。
我尝试使用您提供的示例数据编写查询,请告诉我
我在已处理表(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。