假设我有两个具有以下架构的表(tb1
,tb2
):
CREATE TABLE tb1 (
col1 INT NOT NULL,
col2 TEXT NOT NULL,
col3 TEXT NOT NULL,
col4 REAL
);
如何找到
tb1
,tb2
,col1
列中col2
中不存在的col3
记录?我研究了this,this和this,但到目前为止,它们都只在一个列上找到记录。我还在这些链接中使用了代码/逻辑,但最终返回了错误的结果,但性能却非常差(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
,当然,性能可能取决于现有索引...
SELECT *
FROM tb1
WHERE NOT EXISTS
(
SELECT *
FROM tb2
WHERE
tb1.col1 = tb2.col1 AND
tb1.col2 = tb2.col2 AND
tb1.col3 = tb2.col3
)
关于sql - 查找不在另一个表中的多个字段上的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30296988/