2013-03-23 84 views
1

我有这个查询,它返回没有引用的关键字的所有记录 查询正在工作,但我想删除所有这些记录,问题是如果我把DELETE改为的SELECT我得到错误。SQL DELETE WITH JOIN不工作

SELECT Keywords.[Id] 
    ,[QuoteId]  
    FROM [QuotesTemple].[dbo].[Keywords] 
LEFT JOIN [QuotesTemple].[dbo].Quotes ON Keywords.QuoteId=Quotes.Id 
    WHERE Quotes.Id IS NULL 

这是行不通的。

DELETE 
    FROM [QuotesTemple].[dbo].[Keywords] 
    LEFT JOIN [QuotesTemple].[dbo].Quotes ON Keywords.QuoteId=Quotes.Id 
    WHERE Quotes.Id IS NULL 

我得到这个错误:

消息156,15级,状态1,4号线 关键字附近有语法错误 '左'。

回答

2

写这样的:

DELETE [QuotesTemple].[dbo].[Keywords] FROM [QuotesTemple].[dbo].[Keywords] 
    LEFT JOIN [QuotesTemple].[dbo].Quotes ON Keywords.QuoteId=Quotes.Id 
    WHERE Quotes.Id IS NULL 
+0

现在的工作。谢谢! – 2013-03-23 23:53:56

1

有效语法是:

DELETE [QuotesTemple].[dbo].[Keywords] 
FROM [QuotesTemple].[dbo].[Keywords] AS k 
LEFT JOIN [QuotesTemple].[dbo].[Quotes] AS q ON k.QuoteId = q.Id 
WHERE q.Id IS NULL 
1
you can also write as below 

delete t1 FROM projects AS t1 LEFT OUTER JOIN [QuotesTemple].[dbo].Quotes AS t2 on t1.QuoteId= t2.QuoteId where t2.Id is Null