我可以在SQL中使用JOIN with DELETE子句吗
我想知道以下查询在sql中是否有效:我可以在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
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