本文翻译自:How to Delete using INNER JOIN with SQL Server?
I want to delete using INNER JOIN
in SQL Server 2008 . 我想在SQL Server 2008中使用INNER JOIN
删除。
But I get this error: 但我得到这个错误:
Msg 156, Level 15, State 1, Line 15 消息156,第15级,状态1,第15行
Incorrect syntax near the keyword 'INNER'. 关键字“INNER”附近的语法不正确。
My code: 我的代码:
DELETE FROM WorkRecord2
INNER JOIN Employee ON EmployeeRun=EmployeeNo
WHERE Company = '1' AND Date = '2013-05-06'
#1楼
参考:https://stackoom.com/question/179Yh/如何使用INER-JOIN与SQL-Server删除
#2楼
You need to specify what table you are deleting from, here is a version with an alias: 您需要指定要删除的表,这是带别名的版本:
DELETE w
FROM WorkRecord2 w
INNER JOIN Employee e
ON EmployeeRun=EmployeeNo
WHERE Company = '1' AND Date = '2013-05-06'
#3楼
Just add the name of the table between DELETE
and FROM
from where you want to delete records because we have to specify the table to delete. 只需在DELETE
和FROM
之间添加要删除记录的表的名称,因为我们必须指定要删除的表。 Also remove ORDER BY
clause because there is nothing to order while deleting records. 同时删除ORDER BY
子句,因为删除记录时无需订购。
So your final query should be like this: 所以你的最终查询应该是这样的:
DELETE WorkRecord2
FROM WorkRecord2
INNER JOIN Employee
ON EmployeeRun=EmployeeNo
WHERE Company = '1'
AND Date = '2013-05-06';
#4楼
Possible this be helpful for you - 这可能对你有所帮助 -
DELETE FROM dbo.WorkRecord2
WHERE EmployeeRun IN (
SELECT e.EmployeeNo
FROM dbo.Employee e
WHERE ...
)
Or try this - 或试试这个 -
DELETE FROM dbo.WorkRecord2
WHERE EXISTS(
SELECT 1
FROM dbo.Employee e
WHERE EmployeeRun = e.EmployeeNo
AND ....
)
#5楼
Try this: 试试这个:
DELETE FROM WorkRecord2
FROM Employee
Where EmployeeRun=EmployeeNo
And Company = '1'
AND Date = '2013-05-06'
#6楼
Try this query : 试试这个查询:
DELETE WorkRecord2, Employee
FROM WorkRecord2
INNER JOIN Employee ON (tbl_name.EmployeeRun=tbl_name.EmployeeNo)
WHERE tbl_name.Company = '1'
AND tbl_name.Date = '2013-05-06';