SQL 子句在 select 中查找某些对
SQL clause to find certain pairs in a select
所以我 运行 一个 SELECT 到目前为止给了我这个结果:
这两列来自我连接在一起的不同表格。两者都存储为数字。在这种情况下,"ID" 是主要实体,ID_1 描述了 "ID" 可能处于的状态。一个主要实体可以同时具有多个状态,并且多个实体可以同时处于相同状态同一时间。
现在,我的 select 在我的数据库中显示了所有 entity-state-pairs。我对最终结果的目标是显示任何没有至少一个状态设置为 1 或 9 的条目的实体的行。在上面的示例中,我希望最终结果显示具有以下 ID 的行: 62 和 82
知道如何存档吗?
提前致谢!
这将从第二个 table 中获取 ID,其中 ID_1
是 1 或 9:
SELECT ID
FROM second_table
WHERE ID_1 IN (1, 9)
使用它,您可以 select 从第一个 table 开始,其中 ID 不在上面的结果集中:
SELECT DISTINCT ID
FROM first_table
WHERE ID NOT IN (
SELECT ID
FROM second_table
WHERE ID_1 IN (1, 9)
);
如果您有这样一种情况,例如,ID 63 在第二个 table 中有三个记录,ID_1
值分别为 3、4 和 6,则 SELECT DISTINCT
将使确保 ID 63 在结果中只显示一次而不是三次。
附录
另见 Bob Jarvis 的回答。查询涉及更多但 returns 相同的结果。更重要的是,对于更大的数据集,它 运行 会快很多。
您可以使用外部联接来完成此操作,方法类似于
SELECT DISTINCT t1.ID
FROM TABLE_1 ti
LEFT OUTER JOIN (SELECT t2.ID
FROM TABLE_2 t2
WHERE t2.ID_1 IN (1, 9))
WHERE t2.ID IS NULL;
所以我 运行 一个 SELECT 到目前为止给了我这个结果:
这两列来自我连接在一起的不同表格。两者都存储为数字。在这种情况下,"ID" 是主要实体,ID_1 描述了 "ID" 可能处于的状态。一个主要实体可以同时具有多个状态,并且多个实体可以同时处于相同状态同一时间。
现在,我的 select 在我的数据库中显示了所有 entity-state-pairs。我对最终结果的目标是显示任何没有至少一个状态设置为 1 或 9 的条目的实体的行。在上面的示例中,我希望最终结果显示具有以下 ID 的行: 62 和 82
知道如何存档吗?
提前致谢!
这将从第二个 table 中获取 ID,其中 ID_1
是 1 或 9:
SELECT ID
FROM second_table
WHERE ID_1 IN (1, 9)
使用它,您可以 select 从第一个 table 开始,其中 ID 不在上面的结果集中:
SELECT DISTINCT ID
FROM first_table
WHERE ID NOT IN (
SELECT ID
FROM second_table
WHERE ID_1 IN (1, 9)
);
如果您有这样一种情况,例如,ID 63 在第二个 table 中有三个记录,ID_1
值分别为 3、4 和 6,则 SELECT DISTINCT
将使确保 ID 63 在结果中只显示一次而不是三次。
附录
另见 Bob Jarvis 的回答。查询涉及更多但 returns 相同的结果。更重要的是,对于更大的数据集,它 运行 会快很多。
您可以使用外部联接来完成此操作,方法类似于
SELECT DISTINCT t1.ID
FROM TABLE_1 ti
LEFT OUTER JOIN (SELECT t2.ID
FROM TABLE_2 t2
WHERE t2.ID_1 IN (1, 9))
WHERE t2.ID IS NULL;