我可以在SQL中使用JOIN with DELETE子句吗

我可以在SQL中使用JOIN with DELETE子句吗,sql,Sql,我想知道以下查询在sql中是否有效: DELETE FROM Reporters JOIN Cases ON Reporters.CaseId = Cases.ID WHERE Cases.Court = @Court 我得到一个错误: 连接附近的语法不正确 是的,您可以,只需为表指定别名并使用它进行删除: DELETE R -- SELECT * FROM Reporters AS R INNER JOIN Cases AS C ON R.CaseId = C.ID WHERE

我想知道以下查询在sql中是否有效:

DELETE FROM Reporters 
JOIN Cases ON Reporters.CaseId = Cases.ID 
WHERE Cases.Court = @Court 
我得到一个错误:

连接附近的语法不正确


是的,您可以,只需为表指定别名并使用它进行删除:

DELETE R
-- SELECT *
FROM Reporters AS R
INNER JOIN Cases AS C
    ON R.CaseId = C.ID
WHERE C.Court = @Court ;

如果将表别名为:

DELETE r
FROM Reporters AS r
INNER JOIN Cases AS c
    ON r.CaseId = c.ID
WHERE c.Court = @Court 
或者你可以用

DELETE FROM Reporters 
WHERE EXISTS (SELECT 1 FROM Cases WHERE Cases.ID = Reporters.CaseId AND Cases.Court = @Court)

提及要从中删除的表。(此解决方案特定于SQL Server)


您正在使用MS SQL Server吗?如果是这样的话,您的问题是您使用的数据库管理系统的副本?标准SQL不支持带有DELETE语句的联接对于未指定dbms的问题的特定于产品的答案。对于未指定dbms的问题的特定于产品的答案。感谢提供对于未指定dbms的问题的特定于产品的答案的帮助。
DELETE FROM Reporters 
WHERE EXISTS (SELECT 1 FROM Cases WHERE Cases.ID = Reporters.CaseId AND Cases.Court = @Court)
DELETE re --if you wanted to delete the cases replace `re` with `ca`
FROM Reporters re 
JOIN Cases ca ON re.CaseId = ca.ID 
    WHERE ca.Court = @Court