使用内部联接删除TSQL

PJW*_*PJW 3 t-sql sql-server

以下SQL语句在我的数据库上执行正常:

SELECT * FROM tblKPIs AS k 
INNER JOIN tblKeyPointLinks AS l ON k.KPIID = l.KPIID 
INNER JOIN tblKeyPoints AS p ON p.KptID = l.KptID 
INNER JOIN tblHistory AS h ON h.HistoryID = p.HistoryID 
WHERE h.CaseNo = 50043;
Run Code Online (Sandbox Code Playgroud)

然而,等效的Delete语句在AS附近给出了错误'语法'?

DELETE FROM tblKPIs AS k 
INNER JOIN tblKeyPointLinks AS l ON k.KPIID = l.KPIID 
INNER JOIN tblKeyPoints AS p ON p.KptID = l.KptID 
INNER JOIN tblHistory AS h ON h.HistoryID = p.HistoryID 
WHERE h.CaseNo = 50043;
Run Code Online (Sandbox Code Playgroud)

我可以不在删除语句中使用连接吗?

如果不是我如何执行上述删除?

编辑

表tblKeyPointLinks是一个中间表,用于在tblKPI和tblKeyPoints之间建立多对多关系.因此,SELECT语句会多次返回tblKPI中的一些条目.这是为什么DELETE语句可能有问题?解决这个问题的最佳方法是什么?

Igo*_*nko 5

是的,您可以在删除语句中加入:

DELETE k FROM tblKPIs AS k 
INNER JOIN tblKeyPointLinks AS l ON k.KPIID = l.KPIID 
INNER JOIN tblKeyPoints AS p ON p.KptID = l.KptID 
INNER JOIN tblHistory AS h ON h.HistoryID = p.HistoryID 
WHERE h.CaseNo = 50043;
Run Code Online (Sandbox Code Playgroud)