Nic*_*ahn 4 sql sql-server sql-server-2008
我正在尝试通过连接多个表来删除行,如您所见,但这会引发错误:
DELETE FROM Reg INNER JOIN
RegDoc ON Reg.RegId = RegDoc.RegId INNER JOIN
Doc ON RegDoc.DocId = Doc.DocId
WHERE Doc.Name LIKE N'%Title%'
Run Code Online (Sandbox Code Playgroud)
出现错误:
消息156,级别15,状态1,第1行关键字'INNER'附近的语法错误。
正确的语法是
DELETE [ FROM ] { <object> }
[ FROM <table_source>]
[ WHERE { <search_condition> } ]
Run Code Online (Sandbox Code Playgroud)
应用于您的示例,这将成为
DELETE FROM Reg
FROM Reg
INNER JOIN RegDoc ON Reg.RegId = RegDoc.RegId
INNER JOIN Doc ON RegDoc.DocId = Doc.DocId
WHERE Doc.Name LIKE N'%Title%'
Run Code Online (Sandbox Code Playgroud)
注意表的两个引用Reg
可以通过别名进一步缩短(尽管在这种情况下几乎不需要)
DELETE FROM r
FROM Reg r
INNER JOIN RegDoc ON r.RegId = RegDoc.RegId
INNER JOIN Doc ON RegDoc.DocId = Doc.DocId
WHERE Doc.Name LIKE N'%Title%'
Run Code Online (Sandbox Code Playgroud)
MSDN示例
DELETE FROM Sales.SalesPersonQuotaHistory
FROM Sales.SalesPersonQuotaHistory AS spqh
INNER JOIN Sales.SalesPerson AS sp
ON spqh.BusinessEntityID = sp.BusinessEntityID
WHERE sp.SalesYTD > 2500000.00;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2896 次 |
最近记录: |