【发布时间】:2018-02-01 13:34:51
【问题描述】:
当 NOT EXISTS 与 NOT IN 一起正常工作时,我如何让 NOT EXISTS 在这里工作,我应该使用 NOT EXISTS 得到相同的结果,但我不是。
我在使用 NOT EXISTS 语句时的逻辑有什么问题
NOT EXISTS 应该像 NOT IN 一样与 A.C_SEQUENCE 进行比较。与给我正确记录的 NOT IN 相同的逻辑。
Select A.C_SEQUENCE, A.STATUS
FROM PROD.CONTROL A
where A.AID = 'BILLINGS'
and A.USER='GLOBAL_NETWORK'
--and A.STATUS = 'ON'
and NOT EXISTS
(
select B.H_SEQUENCE
from PROD.STATUS_R B, PROD.CONTROL A
where A.USER='GLOBALNETWORK'
and A.C_SEQUENCE = B.H_SEQUENCE
and B.H_STAT in('IGN','ACK')
)
order by C_date DESC limit 5000
Select A.C_SEQUENCE, A.STATUS
FROM PROD.CONTROL A
where A.AID = 'BILLINGS'
and A.USER='GLOBAL_NETWORK'
--and A.STATUS = 'ON'
and A.C_SEQUENCE NOT IN
(
select B.H_SEQUENCE
from PROD.STATUS_R B, PROD.CONTROL A
where A.USER='GLOBALNETWORK'
and A.C_SEQUENCE = B.H_SEQUENCE
and B.H_STAT in('IGN','ACK')
)
order by C_date DESC limit 5000
【问题讨论】:
-
我怀疑你在任何一种情况下都不希望在相关子查询中出现
, PROD.CONTROL A。 -
请提供带有预期和实际结果的样本数据。
-
@mustaccio 谢谢,您的评论通过删除查询运行完美的 PROD.CONTROL A 解决了这个问题。现在我不明白为什么?
-
您需要将您从 PROD.STATUS_R 中选择的内容与来自 PROD.CONTROL 的外部查询中的特定记录相关联。相反,您在子选择中提供了一个单独的 PROD.CONTROL 实例,具有相同的相关名称 A 以使事情更加混乱。因此,子选择与外部选择不相关。