【问题标题】:In SQL DB2, how would I check if a list of values in one table is available in another table?在 SQL DB2 中,如何检查一个表中的值列表是否在另一个表中可用?
【发布时间】:2020-10-04 12:00:58
【问题描述】:

我有两张桌子。一个是一个相对较小的表,有 20000 条记录,其列具有 id(唯一键)、名称、邮政编码。另一个是一个巨大的表,包含近 10 亿条记录,列 id(唯一键)、名称、年龄、地址和活动状态(布尔值)。我想要在第二个表中不活动的记录,并检查这些不活动的记录是否在第一个表中可用。我不知道如何将第一个表中的记录作为单个查询循环。如何在 Db2 中做到这一点?

【问题讨论】:

  • 连接这两个表的关键列是什么?
  • id 是唯一键和连接的列。其实我想要的是符合上述条件的记录的id

标签: sql database join db2


【解决方案1】:

您可以在这里使用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);

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    相关资源
    最近更新 更多