SQL删除查询

16 浏览
0 Comments

SQL删除查询

这个问题已经有答案了

是否可能在同一SQL语句中从多个表中删除?

如何使用SQL Server内部联接删除?

当我要执行以下查询时:

DELETE 
   login,
   klantGegevens,
   orderGegevens
FROM login 
INNER JOIN klantGegevens ON login.klantid=klantGegevens.klantid 
INNER JOIN orderGegevens ON login.klantid=orderGegevens.loginNr 
WHERE login.klantId=3

我收到了以下错误消息:

Msg 102, Level 15, State 1, Line 1

Incorrect syntax near \',\'.

显然,在\"DELETE\"和\"INNER JOIN\"之间有错误。(DELETE login,klantGegevens,orderGegevens FROM login INNER JOIN )

应该是什么?

谢谢。

编辑:

\"enter

我想删除klantId 3。

admin 更改状态以发布 2023年5月21日
0
0 Comments

尝试这个语法

DELETE L
FROM   login L
       INNER JOIN klantGegevens
               ON L.klantid = klantGegevens.klantid
       INNER JOIN orderGegevens
               ON L.klantid = orderGegevens.loginNr
WHERE  L.klantId = 3 

0
0 Comments

我不知道你尝试使用内连接是否意味着你只想在所有3个表中都存在时才删除记录。

对于这个答案- 假设你不关心(无论在哪里找到都想删除它):

CREATE PROC dbo.DeleteLotsOfStuff
(@id int)
AS
Begin
DELETE FROM login WHERE klantid = @id
DELETE FROM klantGegevens WHERE klantid = @id
DELETE FROM orderGegevens WHERE loginNr = @id
End


EXEC dbo.DeleteLotsOfStuff 3


或者 - 你可以向主表添加约束(主键/外键关系),然后将其设置为“DELETE CASCADE”。如果你这样做,那么每当你运行(例如):

DELETE FROM login WHERE klantid = @id

它会自动从klantGegevens和orderGegevens中删除相应的行。

有关添加约束的更多信息:https://msdn.microsoft.com/zh-cn/library/ms188066.aspx

0