假设我有两个具有以下架构的表(tb1,tb2):
tb1
tb2
CREATE TABLE tb1 ( col1 INT NOT NULL, col2 TEXT NOT NULL, col3 TEXT NOT NULL, col4 REAL );
如何找到的记录tb1中不存在的tb2列上col1,col2,col3?
col1
col2
col3
但到目前为止他们只对一列所有发现的记录。我还在这些链接中使用了代码/逻辑,但最终返回了错误的结果,但性能却非常差(tb1上有45K条记录,tb2上有170万条记录)。我正在尝试在SQLite上实现这一点。
如果您想看的话,这是我的示例代码(使用带w的左连接,其中null为空),但是请不要依赖它:
SELECT * FROM tb1 LEFT JOIN tb2 ON tb1.col1 = tb2.col1 AND tb1.col2 = tb2.col2 AND tb1.col3 = tb2.col3 WHERE tb2.col1 IS NULL AND tb2.col2 IS NULL AND tb2.col3 IS NULL
试一试NOT EXISTS,当然性能可能取决于现有的索引…
NOT EXISTS
SELECT * FROM tb1 WHERE NOT EXISTS ( SELECT * FROM tb2 WHERE tb1.col1 = tb2.col1 AND tb1.col2 = tb2.col2 AND tb1.col3 = tb2.col3 )