当前位置: 首页 > 知识库问答 >
问题:

sql删除查询[重复]

颛孙昆
2023-03-14

当我要执行以下查询时:

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

我得到了错误:

消息102,级别15,状态1,第1行“,”附近的语法不正确。

编辑:

我要删除klantId 3。

共有1个答案

甘西岭
2023-03-14

我不知道您尝试使用内部联接是否暗示您只想删除一条记录,如果它存在于所有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

有关添加禁忌的详细信息,请访问:https://msdn.microsoft.com/en-us/library/ms188066.aspx

 类似资料:
  • 问题内容: 我需要从下表中删除半重复记录 对于存在的任何重复PID,我想删除最低得分记录。在上面的示例中,将删除ID 1。我试图提出一种不使用循环的方法,但确实很挣扎。 任何帮助,将不胜感激。 谢谢 问题答案:

  • 我使用注释和注释执行查询,并从数据库表中删除记录。 错误: xxx的例外。xxx。xx,原因='javax。坚持不懈TransactionRequiredException:执行更新/删除查询“和异常=”执行更新/删除查询;嵌套的异常是javax。坚持不懈TransactionRequiredException:执行更新/删除查询'

  • 问题内容: 没有人有一个优雅的sql语句来删除表中的重复记录,但前提是重复项的数量多于x个?因此,最多允许2或3个重复项,仅此而已? 当前,我有一条执行以下操作的select语句: 这很好用。但是现在,我只想删除那些重复超过2个的行。 谢谢 问题答案: with cte as ( select row_number() over (partition by dupcol1, dupcol2 ord

  • 问题内容: 我有一张桌子,如下所示: 我想基于3个字段emp_name,emp_address和sex删除重复的条目。和我的结果表(删除重复项后)应类似于- 我不记得如何为此编写SQL查询。任何人都可以帮忙吗? 问题答案: 看起来所有四个列值都是重复的,因此您可以执行以下操作- 但是,如果婚姻状况可能有所不同,并且您还有其他根据其选择的列(例如,您希望基于create_date列作为最新记录),则

  • 问题内容: 这可能很简单,这是我的查询: 但这只会删除具有相同u.name和p.pic_id的行中的重复项。我想要这样,如果名称有任何重复,则只剩下其他行。这是一个奇怪的查询,但是总的来说,我如何将不重复项应用于SELECT子句的单个列? 问题答案: 任意选择保留最小的PIC_ID。另外,请避免使用隐式连接语法。

  • 问题内容: 当我尝试从数据库中删除条目时,使用 然后我可以执行以下操作: 1)如果该行存在于数据库中,则将执行两个SQL查询:一个选择,然后一个删除 2)如果数据库中不存在该行,则仅执行选择查询 但是同样,更新不是这种情况。无论是否存在数据库行,都只会执行更新查询。 请让我知道为什么这种行为用于删除操作。这不是性能问题,因为遇到了两个查询而不是一个查询? 编辑: 我正在使用hibernate3.2