【发布时间】:2020-02-18 18:51:49
【问题描述】:
我在编辑器窗口中使用带有 SQL 命令的 Oracle Toad。
我创建了两个新表(PIDS1 和 PIDS2),其中仅包含来自两个相关表的一列 ID 号。
我曾预计PIDS2 将包含PIDS1 中ID 的超集。当我试图识别PIDS2 中不在PIDS1 中的ID 时,我开始了一场野鹅追逐。
假设我的表中的数据发生了一些意想不到的事情。但我无法理解下面描述的两个简化查询。数字不一致。有人可以解释发生了什么吗?
-- PIDS1 IS A SINGLE-COLUMN TABLE THAT CONTAINS 1638061 DISTINCT ID'S
-- PIDS2 IS A SINGLE-COLUMN TABLE THAT CONTAINS 3510272 DISTINCT ID'S
SELECT COUNT(T2.ID)
FROM PIDS2 T2
WHERE T2.ID NOT IN (
SELECT T1.ID
FROM PIDS1 T1);
-- RESULT IS ZERO!
-- WTF? PIDS2 HAS MORE ID'S THAN PIDS1!
SELECT COUNT(T1.ID)
FROM PIDS1 T1
WHERE T1.ID NOT IN (
SELECT T2.ID
FROM PIDS2 T2);
-- RESULT IS 786690
-- WHERE DID THAT NUMBER COME FROM? LOOKS ARBITRARY
【问题讨论】:
标签: sql oracle compare subquery toad