DELETE
FROM processing_transaction AS pt
INNER JOIN processing_transaction_movement AS ptm
ON pt.processing_transaction_id = ptm.processing_transaction_id
LEFT OUTER JOIN test_package tesp ON pt.test_package_id = tesp.test_package_id
LEFT OUTER JOIN test_batch tbat On tesp.test_batch_id = tbat.test_batch_id
WHERE pt.processing_transaction_type = 'TEST';
我收到以下错误:
错误:>> INNER<<<<<< 第1行:DELETE FROM processing_transaction AS pt INNER JOIN processi ...
请帮我在SQL查询中找到错误
感谢您的支持@desislavkamenov @jan。 现在我用这个:
开始工作;
DELETE FROM processing_transaction AS pt 使用processing_transaction_movement AS ptm,test_package tesp,test_batch tbat 在哪里pt.processing_transaction_type ='TEST'; AND pt.processing_transaction_id = ptm.processing_transaction_id AND pt.test_package_id = tesp.test_package_id AND tesp.test_batch_id = tbat.test_batch_id
ROLLBACK;
但是我需要删除两个表(processing_transaction和processing_transaction_movement)中的数据,我已经找到了这样的想法,发现我可以用“ON DELETE CASCADE”来做。但我不知道如何在这里使用它。 所以请再次帮助我。
答案 0 :(得分:14)
您无法在DELETE语句中使用JOIN。而是使用USING并将第二个表放在那里。
这样的事情应该有效(对不起但是我无法测试它,所以在BEGIN
事务之后运行它并检查结果是否符合它COMMIT
之前的结果; {{1}如果他们不是)。
ROLLBACK
以下是文档的链接。 http://www.postgresql.org/docs/current/static/sql-delete.html
答案 1 :(得分:2)
据我所知,JOIN
语句中不支持DELETE
语法。根据{{3}},您可以使用某些其他子查询;特别是USING
语法可能很有趣。该页面上有一些示例用于查看其他表的DELETE
查询。