[英]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.