2016-09-29 41 views
-3

不知是SQL下面的查询有效:我能用删除第一个加入SQL

DELETE FROM Reporters 
JOIN Cases ON Reporters.CaseId = Cases.ID 
WHERE Cases.Court = @Court 

我得到一个错误:

Incorrect syntax near join

+0

您是否正在使用MS SQL Server?如果是这样,你的问题是重复的https://stackoverflow.com/questions/16481379/how-to-delete-using-inner-join-with-sql-server – jpw

+3

你使用哪些DBMS?标准SQL不支持使用DELETE语句的JOIN –

回答

1

提从中,你想从删除表。 (该解决方案特定于SQL Server)

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 
+0

针对没有指定dbms的问题的产品特定答案。 – jarlh

+0

感谢您的帮助 – ppetyr

1
DELETE r 
FROM reporters as r 
INNER JOIN cases as c 
ON r.CaseId = c.ID 
    WHERE c.Court = @Court 
+1

针对没有指定dbms的问题的产品特定答案。 – jarlh

1

可以呀,你只需指定别名到您的表格并删除使用它:

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

针对没有指定dbms的问题的产品特定答案。 – jarlh

1

如果你像表一样使用表,它将会工作;

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)