简体   繁体   English

从SQL Server 2008 R2中的联接表中删除行

[英]Delete a row from a Joined table in SQL Server 2008 R2

i have two tables: 我有两张桌子:

CREATE TABLE [Training].[UserTrainingModuleResults](
[UserTrainingModuleResultId] [int] IDENTITY(1,1) NOT NULL,
[TrainingModules_TrainingModuleId] [int] NOT NULL,
[Users_UserId] [int] NOT NULL,
[DateAndTimeStarted] [datetime] NOT NULL,
[DateAndTimeCompleted] [datetime] NULL,
[NumberOfQuestionsAnswered] [smallint] NOT NULL,
[NumberOfQuestionsAnsweredCorrectly] [smallint] NOT NULL,
[TrainingModuleStatuses_TrainingModuleStatusId] [smallint] NOT NULL,
  CONSTRAINT [PK_UserTrainingModuleResults] PRIMARY KEY CLUSTERED 
(
[UserTrainingModuleResultId] ASC
  )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,    ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

and

CREATE TABLE [History].[ViewTrainingModuleHistory](
[HistoryId] [int] NOT NULL,
[TrainingModules_TrainingModuleId] [int] NOT NULL,
CONSTRAINT [PK_ViewTrainingModuleHistory] PRIMARY KEY CLUSTERED 
(
[HistoryId] ASC
  )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
 ) ON [PRIMARY]

then i have a script that must delete from the ViewTrainingModuleHistory where TrainingModules_TrainingModuleId = UserTrainingModuleResults.TrainingModules_TrainingModuleId 然后我有一个必须从ViewTrainingModuleHistory中删除的脚本,其中TrainingModules_TrainingModuleId = UserTrainingModuleResults.TrainingModules_TrainingModuleId

delete from History.TrainingModuleCompletedHistory as tmch  //syntax error here
  left join Training.UserTrainingModuleResults as utmr
on utmr.UserTrainingModuleResultId = tmch.UserTrainingModuleResults_UserTrainingModuleResultId
where utmr.Users_UserId = 446 and tmch.UserTrainingModuleResults_UserTrainingModuleResultId = 110

the above is not correct, i get syntax error near "as" please help thanks 上面的是不正确的,我在“ as”附近收到语法错误,请帮忙谢谢

delete tmch  
from History.TrainingModuleCompletedHistory tmch
  left join Training.UserTrainingModuleResults utmr
on utmr.UserTrainingModuleResultId = tmch.UserTrainingModuleResults_UserTrainingModuleResultId
where utmr.Users_UserId = 446 and tmch.UserTrainingModuleResults_UserTrainingModuleResultId = 110

The alias should be right after the word DELETE : 别名应在单词DELETE

delete tmch   --- < alias of table to delete records from goes here
from History.TrainingModuleCompletedHistory tmch  
left join Training.UserTrainingModuleResults utmr
  on utmr.UserTrainingModuleResultId = tmch.UserTrainingModuleResults_UserTrainingModuleResultId
where utmr.Users_UserId = 446 
  and tmch.UserTrainingModuleResults_UserTrainingModuleResultId = 110
delete tmch  
from History.TrainingModuleCompletedHistory tmch  
left join Training.UserTrainingModuleResults utmr
on utmr.UserTrainingModuleResultId = tmch.UserTrainingModuleResults_UserTrainingModuleResultId
where utmr.Users_UserId = 446 
and tmch.UserTrainingModuleResults_UserTrainingModuleResultId = 110

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM