繁体   English   中英

使用JOIN在SQL中仍然无法删除

[英]Still can't delete in SQL using JOIN

我正在使用PostgreSQL。 我看到其他人在删除时无法使用join的帖子,说是指定要从中删除的表。 我做到了,但这仍然行不通。 它说“在'Customers'或附近有一个语法错误。我正在使用着名的Northwind数据库。

DELETE Customers FROM Customers INNER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
WHERE Customers.CustomerID = 5;

该代码实际上并没有做任何有用的事情,我只想知道为什么我不能使用JOIN删除。

手册中所述,您不能像在DELETE语句中那样使用JOIN 要将表连接到基表,您需要使用USING子句:

DELETE FROM Customers 
using Orders
where Customers.CustomerID=Orders.CustomerID
  and Customers.CustomerID = 5;

这相当于没有联接的SQL:

delete from customers as c
where c.customerid = 5
and exists (select * 
            from orders o
            where o.customerid = c.customerid);

加入删除操作将永远无法进行。 如果要确保客户已下订单,可以尝试执行以下操作:

DELETE FROM Customers 
WHERE 
CustomerID = 5 AND
CustomerID IN (SELECT o.CustomerID FROM Orders o);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM