假设我有2个表格(tb1
,tb2
),同时包含以下架构:
CREATE TABLE tb1 (
col1 INT NOT NULL,
col2 TEXT NOT NULL,
col3 TEXT NOT NULL,
col4 REAL
);
如何在[{1}},tb1
,tb2
列上找到col1
中不存在的col2
记录?
我在this,this和this进行了研究,但到目前为止,他们只在一列上查找记录。我也在这些链接中使用了代码/逻辑,但最终以非常差的性能返回错误的结果(tb1上有45K记录,tb2上有1.7M记录)。我试图在SQLite上实现它。
如果你想看到,这里是我的示例代码(使用左连接w / where为null),但不要依赖它:
col3
答案 0 :(得分:8)
尝试使用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
)
答案 1 :(得分:1)
如下:
SELECT *
FROM tb1
WHERE NOT EXISTS (SELECT * FROM tb2
WHERE tb1.col1 = tb2.col1
AND tb1.col2 = tb2.col2
AND tb1.col3 = tb2.col3)
答案 2 :(得分:0)
你好@Dnoeth和@Sober,
您可能会遇到跟随Dnoeth解决方案的问题,如果您不是,请告诉我。
消息402,级别16,状态1,行9数据类型文本和文本是 在等于运算符中不兼容。
注意:由于声誉较低,我无法发表评论。