Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何使用内部联接和子查询编写delete语句_Sql_Oracle_Sql Delete - Fatal编程技术网

Sql 如何使用内部联接和子查询编写delete语句

Sql 如何使用内部联接和子查询编写delete语句,sql,oracle,sql-delete,Sql,Oracle,Sql Delete,下面的查询有什么问题,它的抛出错误SQL错误:ORA-00933:SQL命令没有正确结束 93300000-“SQL命令未正确结束”。 要从两个与ERROR\u LOG err\u payment\u id匹配的表中删除所有payment\u id吗 请帮我纠正这个问题 TBLPAYMENT(PAYMENT_ID, OTHER COLUMNS) TBLPAYMENT_ALT_ID (PAYMENT_ID, OTHER COLUMNS) ERROR_LOG(ERR_PAYMENT_ID, OTHE

下面的查询有什么问题,它的抛出错误SQL错误:ORA-00933:SQL命令没有正确结束 93300000-“SQL命令未正确结束”。 要从两个与ERROR\u LOG err\u payment\u id匹配的表中删除所有payment\u id吗 请帮我纠正这个问题

TBLPAYMENT(PAYMENT_ID, OTHER COLUMNS)
TBLPAYMENT_ALT_ID (PAYMENT_ID, OTHER COLUMNS)
ERROR_LOG(ERR_PAYMENT_ID, OTHER COLUMNS)

    DELETE TBLPAYMENT, TBLPAYMENT_ALT_ID FROM TBLPAYMENT PYMT INNER JOIN 
    TBLPAYMENT_ALT_ID PAI ON PYMT.PAYMENT_ID = PAI.PAYMENT_ID 
    WHERE PYMT.PAYMENT_ID IN (SELECT ERR_PAYMENT_ID FROM ERROR_LOG);

您需要在Oracle中使用2条
delete
语句

DELETE TBLPAYMENT PYMT WHERE PYMT.PAYMENT_ID IN (SELECT ERR_PAYMENT_ID FROM ERROR_LOG);

DELETE TBLPAYMENT_ALT_ID PAI WHERE PAI.PAYMENT_ID IN (SELECT ERR_PAYMENT_ID FROM ERROR_LOG);

您需要在Oracle中使用2条
delete
语句

DELETE TBLPAYMENT PYMT WHERE PYMT.PAYMENT_ID IN (SELECT ERR_PAYMENT_ID FROM ERROR_LOG);

DELETE TBLPAYMENT_ALT_ID PAI WHERE PAI.PAYMENT_ID IN (SELECT ERR_PAYMENT_ID FROM ERROR_LOG);

无法在SQL Server中使用“加入”删除。此外,您不能使用普通的delete一次从多个表中删除。相反,将其设置为2删除语句,如下所示:

DELETE FROM TBLPAYMENT
       WHERE EXISTS
       (      
          SELECT 1 FROM ERROR_LOG WHERE ERR_PAYMENT_ID = TBLPAYMENT.PAYMENT_ID
       )
DELETE FROM TBLPAYMENT_ALT_ID
       WHERE EXISTS
       (      
          SELECT 1 FROM ERROR_LOG WHERE ERR_PAYMENT_ID = TBLPAYMENT_ALT_ID.PAYMENT_ID
       )

无法在SQL Server中使用“加入”删除。此外,您不能使用普通的delete一次从多个表中删除。相反,将其设置为2删除语句,如下所示:

DELETE FROM TBLPAYMENT
       WHERE EXISTS
       (      
          SELECT 1 FROM ERROR_LOG WHERE ERR_PAYMENT_ID = TBLPAYMENT.PAYMENT_ID
       )
DELETE FROM TBLPAYMENT_ALT_ID
       WHERE EXISTS
       (      
          SELECT 1 FROM ERROR_LOG WHERE ERR_PAYMENT_ID = TBLPAYMENT_ALT_ID.PAYMENT_ID
       )
试试这个-

DELETE from TBLPAYMENT where PAYMENT_ID in (select PYMT.PAYMENT_ID FROM TBLPAYMENT PYMT INNER JOIN 
TBLPAYMENT_ALT_ID PAI ON PYMT.PAYMENT_ID = PAI.PAYMENT_ID 
WHERE PYMT.PAYMENT_ID IN (SELECT ERR_PAYMENT_ID FROM ERROR_LOG))

DELETE from TBLPAYMENT_ALT_ID where PAYMENT_ID in (select PAI.PAYMENT_ID FROM TBLPAYMENT PYMT INNER JOIN 
TBLPAYMENT_ALT_ID PAI ON PYMT.PAYMENT_ID = PAI.PAYMENT_ID 
WHERE PYMT.PAYMENT_ID IN (SELECT ERR_PAYMENT_ID FROM ERROR_LOG))
试试这个-

DELETE from TBLPAYMENT where PAYMENT_ID in (select PYMT.PAYMENT_ID FROM TBLPAYMENT PYMT INNER JOIN 
TBLPAYMENT_ALT_ID PAI ON PYMT.PAYMENT_ID = PAI.PAYMENT_ID 
WHERE PYMT.PAYMENT_ID IN (SELECT ERR_PAYMENT_ID FROM ERROR_LOG))

DELETE from TBLPAYMENT_ALT_ID where PAYMENT_ID in (select PAI.PAYMENT_ID FROM TBLPAYMENT PYMT INNER JOIN 
TBLPAYMENT_ALT_ID PAI ON PYMT.PAYMENT_ID = PAI.PAYMENT_ID 
WHERE PYMT.PAYMENT_ID IN (SELECT ERR_PAYMENT_ID FROM ERROR_LOG))

您想只删除一列吗?请不要标记不相关的RDBMS。在中,您在
delete
语句的哪里找到了支持
internal JOIN
的语法?您想只删除一列吗?请不要标记不相关的RDBMS。在中,您在哪里找到了支持
internal JOIN
的语法
DELETE
语句?您可以使用SQL Server中的联接进行删除,但不能使用Oracle。您可以使用SQL Server中的联接进行删除,但不能使用Oracle。