以下是我正在尝试执行的查询,它将永远执行。
SELECT DISTINCT (CLN_CLNDR_DT)FROM CLN_CLNDR CLN,
SYG_SYSTEM_GLOBALS SYG,CTD_CSH_TRNSCTN_DTLS CTD WHERE CLN.CLN_BP_ID = SYG.SYG_BP_ID AND CLN.CLN_ENTITY_ID = CTD.CTD_ENTITY_ID AND CLN_DT_SEQ_NUM
IN
(SELECT DISTINCT (CLN1.CLN_DT_SEQ_NUM)
FROM CLN_CLNDR CLN1,
SBD_SYS_BSNS_DTS SBD,
SYG_SYSTEM_GLOBALS SYG,
CTD_CSH_TRNSCTN_DTLS CTR
WHERE SBD.SBD_BSNS_DT = CLN1.CLN_CLNDR_DT
AND CLN1.OU_ID = SBD.OU_ID
AND CLN1.CLN_BP_ID = SYG.SYG_BP_ID
AND CLN1.CLN_ENTITY_ID = CTR.CTD_ENTITY_ID
);
当我尝试仅在 中运行查询时,它很容易将结果返回为 (522,470,419,417,553,582,305,361)
SELECT DISTINCT (CLN1.CLN_DT_SEQ_NUM)
FROM CLN_CLNDR CLN1,
SBD_SYS_BSNS_DTS SBD,
SYG_SYSTEM_GLOBALS SYG,
CTD_CSH_TRNSCTN_DTLS CTR
WHERE SBD.SBD_BSNS_DT = CLN1.CLN_CLNDR_DT
AND CLN1.OU_ID = SBD.OU_ID
AND CLN1.CLN_BP_ID = SYG.SYG_BP_ID
AND CLN1.CLN_ENTITY_ID = CTR.CTD_ENTITY_ID;
此外,当我尝试直接执行完整查询时,替换 块中的查询 内部查询的结果是(522,470,419,417,553,582,305,361),
工作正常。
由于我是新手,我不知道发生了什么。 请帮帮我。
答案 0 :(得分:0)
我认为您不需要子查询中的所有表,因为您已经在使用它们来过滤外部查询中的行。试试这个:
SELECT DISTINCT (CLN_CLNDR_DT)
FROM CLN_CLNDR CLN,
SYG_SYSTEM_GLOBALS SYG,
CTD_CSH_TRNSCTN_DTLS CTD
WHERE CLN.CLN_BP_ID = SYG.SYG_BP_ID
AND CLN.CLN_ENTITY_ID = CTD.CTD_ENTITY_ID
AND CLN_DT_SEQ_NUM
IN
(SELECT DISTINCT (CLN1.CLN_DT_SEQ_NUM)
FROM CLN_CLNDR CLN1,
SBD_SYS_BSNS_DTS SBD,
WHERE SBD.SBD_BSNS_DT = CLN1.CLN_CLNDR_DT
AND CLN1.OU_ID = SBD.OU_ID
);