SQL查询-在delete中使用select两次

SQL查询-在delete中使用select两次,sql,oracle,Sql,Oracle,我可以在delete中使用select两次,因为我的需求需要这样做,但是在db中尝试时,我得到了ORA-00936“missing expression”错误 DELETE FROM GLTB_REIM_DETAILS_TABLE_MAP WHERE SELECT REPORT_NAME_C FROM PRTB_REIM_REPORT_MAP, prtb_pay_remb_claims WHERE (SELECT PAY_ELEMENT_CODE_C FROM PRTB_PAY_REMB_C

我可以在delete中使用select两次,因为我的需求需要这样做,但是在db中尝试时,我得到了ORA-00936“missing expression”错误

DELETE FROM GLTB_REIM_DETAILS_TABLE_MAP WHERE
SELECT REPORT_NAME_C
FROM PRTB_REIM_REPORT_MAP, prtb_pay_remb_claims
WHERE (SELECT PAY_ELEMENT_CODE_C
  FROM PRTB_PAY_REMB_CLAIMS
  WHERE voucher_no_n='W288'
  AND emp_id_c      ='78881');
帮助解决此查询

试试看

DELETE FROM GLTB_REIM_DETAILS_TABLE_MAP A
 WHERE A.TABLEFIELD in (SELECT REPORT_NAME_C
    FROM PRTB_REIM_REPORT_MAP B, prtb_pay_remb_claims C
   WHERE B.TABLEFIELD in (SELECT PAY_ELEMENT_CODE_C
      FROM PRTB_PAY_REMB_CLAIMS
     WHERE voucher_no_n = 'W288'
       AND emp_id_c = '78881'));

“Where”条件似乎不完整。请检查一下。你需要把它和一些参数等同起来。检查语法。

我认为您缺少表PRTB\u REIM\u REPORT\u MAP和PRTB\u pay\u remb\u索赔之间的一些连接。我应该看一下表格声明,这样会更有帮助。但是delete语句应该是这样的:

DELETE FROM GLTB_REIM_DETAILS_TABLE_MAP A
WHERE EXISTS (SELECT REPORT_NAME_C
   FROM PRTB_REIM_REPORT_MAP, prtb_pay_remb_claims
   WHERE EXISTS (SELECT *
      FROM PRTB_PAY_REMB_CLAIMS
      WHERE voucher_no_n = 'W288'
      AND emp_id_c = '78881'));

为什么使用A、B和C??我不知道如何使用这个别名​,表写入相同字段的方面和差异问题,而不是A,表字段指的是哪个表名的字段??是的,它不起作用。就像维尼告诉你的,在“哪里”的情况下有些东西不见了。请告诉我们如何加入每个表。所有的信息我都帮不上忙。