Sql 如何使用内部联接和子查询编写delete语句
下面的查询有什么问题,它的抛出错误SQL错误:ORA-00933:SQL命令没有正确结束 93300000-“SQL命令未正确结束”。 要从两个与ERROR\u LOG err\u payment\u id匹配的表中删除所有payment\u id吗 请帮我纠正这个问题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
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。