我正在使用SQL Server数据库。我想使用id
在单个查询中删除多个表记录。
但我得到了
语法错误','
错误
我知道我的查询可能有误。我需要一个正确的查询或解决方案。
我有4个表:Products
,ProductVideos
,Pictures
和Inventory
。我需要在一个查询中删除同一产品ID中的所有记录。
我的查询是:
DELETE FROM Products, ProductVideos, Pictures, Inventory
USING Products
INNER JOIN ProductVideos
INNER JOIN Pictures
INNER JOIN Inventory
WHERE Products.Id = ProductVideos.ProductId
AND ProductVideos.ProductId = Pictures.ProductId
AND Pictures.ProductId = Inventory.ProductId
AND Products.Id = 1
答案 0 :(得分:1)
你的问题是错的。
我认为你应该使用这个解决方案:
delete from [dbo].[Inventory]
where ProductID in (select Id from Products where Id = 1)
delete from [dbo].[Pictures]
where ProductID in (select Id from Products where Id = 1)
delete from [dbo].[ProductVideos]
where ProductID in (select Id from Products where Id = 1)
delete from [dbo].[Products]
where Id = 1
答案 1 :(得分:0)
您无法在SQL Server中的单个查询中删除多个表格的数据。 您必须逐个删除每个表中的数据。
DECLARE @id INT
SET @id = 1
DELETE I
FROM Products P
INNER JOIN ProductVideos PV ON P.Id = PV.ProductId
INNER JOIN Pictures PC ON PC.ProductID = PV.ID
INNER JOIN Inventory I ON I.ProductId = PC.ProductId
WHERE P.Id = @id
DELETE PC
FROM Products P
INNER JOIN ProductVideos PV ON P.Id = PV.ProductId
INNER JOIN Pictures PC ON PC.ProductID = PV.ID
WHERE P.Id = @id
DELETE PV
FROM Products P
INNER JOIN ProductVideos PV ON P.Id = PV.ProductId
WHERE P.Id = @id
DELETE P
FROM Products P
WHERE P.Id = @id
虽然删除它非常重要,但要记住表的顺序,如果在查询中使用TRANSACTION,则会更好。