1

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

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 行关键字“LEFT”附近的语法不正确。

4

3 回答 3

2

像这样写:

DELETE [QuotesTemple].[dbo].[Keywords] FROM [QuotesTemple].[dbo].[Keywords]
  LEFT JOIN [QuotesTemple].[dbo].Quotes ON Keywords.QuoteId=Quotes.Id
  WHERE Quotes.Id IS NULL
于 2013-03-23T23:50:14.457 回答
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
于 2013-03-23T23:55:54.140 回答
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
于 2013-03-24T00:00:59.673 回答