内部查询工作流程

时间:2017-09-26 10:12:18

标签: oracle oracle12c plsqldeveloper inner-query

执行下面的Query时,它已成功执行。

但是当只执行时(SELECT CREDITDOCUMENTID FROM TBLTPAYMENT),它会给出错误,例如“00904. 00000 - ”%s:无效的标识符“”。

不知道它在oracle 12c数据库中的工作方式。

SELECT *
FROM TBLTCREDITCREDITDOCUMENTREL
WHERE CREDITDOCUMENTID IN
  (SELECT CREDITDOCUMENTID
  FROM TBLTCREDITDOCUMENT
  WHERE CREDITDOCUMENTID IN
    (SELECT CREDITDOCUMENTID FROM TBLTPAYMENT    )
  ); 

1 个答案:

答案 0 :(得分:2)

一个有根据的猜测(我打赌它)将是您的列CREDITDOCUMENTID不是来自TBLTPAYMENT表的列,而是来自范围内的其他表,例如在TBLTCREDITDOCUMENT。这很容易检查。尝试运行此查询:

SELECT *
FROM TBLTCREDITCREDITDOCUMENTREL
WHERE CREDITDOCUMENTID IN
  (SELECT CREDITDOCUMENTID
  FROM TBLTCREDITDOCUMENT
  WHERE CREDITDOCUMENTID IN
    (SELECT TBLTPAYMENT.CREDITDOCUMENTID FROM TBLTPAYMENT)
  ); 

如果您符合TBLTPAYMENT.CREDITDOCUMENTID列的资格。你会得到与你自己运行最内层SELECT时相同的错误。