关于sql server:sql delete query

sql delete query

本问题已经有最佳答案,请猛点这里访问。

当我要执行以下查询时:

1
2
3
4
5
6
7
8
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 ','.

显然,"删除"和"内部联接"之间存在错误。(从登录内部联接中删除登录、klantgegevens、ordergegevens)

应该是什么?

谢谢你。

编辑:

enter image description here

我想删除Klantid 3。


我不知道,如果你试图使用内部连接implies,你只想删除A记录,如果它存在,在所有三个表。

这个答案——如果你不在乎(你只是想删除它无论你找到它)。

1
2
3
4
5
6
7
8
9
10
11
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
1
EXEC dbo.DeleteLotsOfStuff 3

-你也加(主键约束/外交关系表的主密钥),然后设置它的"级联删除。如果你去,然后当你运行(例如):

1
DELETE FROM login WHERE klantid = @id

它会自动删除从orderGegevensklantGegevens和相应的行。

更多信息在这里添加contraints:http://。/en-US /图书馆/ ms188066.aspx


试试这个语法

1
2
3
4
5
6
7
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