为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】*:
**sql1:**SELECT PERSON.BUDGET_DEPT,
NVL((SELECT SD.COA_COMPANY
FROM T_SYS_DEPT SD
WHERE SD.ID = TO_CHAR(PERSON.BUDGET_DEPT)),
TO_CHAR(PERSON.BUDGET_DEPT)) AA
FROM T_BMS_BILL_MAIN MAIN, T_BMS_BILL_PERSON PERSON
WHERE MAIN.ID = 'BBM202308171946536E6AB3D894884C06B0AE1C5B4B4972E4'
AND PERSON.MAIN_ID = MAIN.ID
AND (INSTR('@(SDT202304111030202DD103A289B44B2A81FD8185CC9FD866)',
'@(' || NVL((SELECT SD.COA_COMPANY
FROM T_SYS_DEPT SD
WHERE SD.ID = TO_CHAR(PERSON.BUDGET_DEPT)),
TO_CHAR(PERSON.BUDGET_DEPT)) || ')') <= 0)
AND (PERSON.ORIGINAL_CURRENCY_SUM) != 0; -- 此sql执行结果正确!
此sql的执行计划:
sql2:SELECT PERSON.BUDGET_DEPT
FROM T_BMS_BILL_MAIN MAIN, T_BMS_BILL_PERSON PERSON
WHERE MAIN.ID = 'BBM202308171946536E6AB3D894884C06B0AE1C5B4B4972E4'
AND PERSON.MAIN_ID = MAIN.ID
AND (INSTR('@(SDT202304111030202DD103A289B44B2A81FD8185CC9FD866)',
'@(' || NVL((SELECT SD.COA_COMPANY
FROM T_SYS_DEPT SD
WHERE SD.ID = TO_CHAR(PERSON.BUDGET_DEPT)),
TO_CHAR(PERSON.BUDGET_DEPT)) || ')') <= 0)
AND (PERSON.ORIGINAL_CURRENCY_SUM) != 0; -- 此SQL执行结果不正确!
此sql的执行计划:
备注:两个sql在oracle中执行结果一致,均完全正确!
第一个语句多关联了一张表
截图结果集。。
到底是哪里不一样。返回总行数相同吗?
如果只是结果集输出顺序不一样,不能说是错的。