SQL查询 - 在删除内使用select两次

时间:2013-10-05 08:41:02

标签: sql oracle

我可以在删除内使用select两次,因为我的要求要求这个,但在db中尝试时会出现ORA-00936“缺少表达式”错误。

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');

帮助解决此问题!!!

3 个答案:

答案 0 :(得分:1)

'哪里'条件似乎不完整。请检查一次。你需要将它与一些参数等同起来。检查语法。

答案 1 :(得分:0)

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'));

答案 2 :(得分:0)

我认为你在表PRTB_REIM_REPORT_MAP和prtb_pay_remb_claims之间缺少一些联接。我认为表格声明更有帮助。但删除语句应该是这样的:

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'));