在SQL DB2中,如何检查一个表中的值列表在另一个表中是否可用?

在SQL DB2中,如何检查一个表中的值列表在另一个表中是否可用?,sql,database,join,db2,Sql,Database,Join,Db2,我有两张桌子。一个是一个相对较小的表,它有20000条记录,其中的列具有id(唯一键)、名称和zipcode。另一个是一个巨大的表,包含近10亿条记录,其中包含id(唯一键)、name、age、address和activestatus(布尔)列。我希望在第二个表中有不活动的记录,并检查这些不活动的记录在第一个表中是否可用。我不知道如何将第一个表中的记录作为单个查询循环。如何在Db2中做到这一点?您可以在这里使用EXISTS逻辑: SELECT t1.* FROM Table1 t1 WHERE

我有两张桌子。一个是一个相对较小的表,它有20000条记录,其中的列具有id(唯一键)、名称和zipcode。另一个是一个巨大的表,包含近10亿条记录,其中包含id(唯一键)、name、age、address和activestatus(布尔)列。我希望在第二个表中有不活动的记录,并检查这些不活动的记录在第一个表中是否可用。我不知道如何将第一个表中的记录作为单个查询循环。如何在Db2中做到这一点?

您可以在这里使用
EXISTS
逻辑:

SELECT t1.*
FROM Table1 t1
WHERE EXISTS (SELECT 1 FROM Table2 t2 WHERE t2.id = t1.id AND t2.status = false);
请注意,上述查询可能受益于第二个表上的以下索引:

CREATE INDEX idx2 ON Table2 (id, status);

这可能会让查找进行得更快。请注意,我们选择通过扫描第一个表并在第二个表中查找来表达您的逻辑,因为第一个表比第二个表小得多。

您可以在此处使用
EXISTS
逻辑:

SELECT t1.*
FROM Table1 t1
WHERE EXISTS (SELECT 1 FROM Table2 t2 WHERE t2.id = t1.id AND t2.status = false);
请注意,上述查询可能受益于第二个表上的以下索引:

CREATE INDEX idx2 ON Table2 (id, status);

这可能会让查找进行得更快。请注意,我们选择通过扫描第一个表并在第二个表中查找来表达您的逻辑,因为第一个表比第二个表小得多。

连接这两个表的键列是什么?id是唯一键和连接的列。事实上,我想要的是与上述标准匹配的记录的id连接这两个表的键列是什么?id是唯一键和连接的列。事实上,我想要的是符合上述条件的记录的ID