一尘不染

通过联接从一个表中删除

mysql

我试图根据另一个数据库的选择标准从一个数据库中删除记录。我们有两个表,emailNotification,用于存储作业和电子邮件列表。然后我们有工作。我想清除已关闭作业的emailNotifications。我在Stackoverflow上找到了一些较早的示例,这些示例将我带到了这种语法类型(我以前曾尝试在where之前进行连接)。

DELETE FROM emailNotification
WHERE notificationId IN (
 SELECT notificationId FROM emailNotification e
 LEFT JOIN jobs j ON j.jobId = e.jobId
WHERE j.active = 1
)

我收到错误消息,您无法在FROM子句中指定目标表’emailNotication’进行更新。


阅读 195

收藏
2020-05-17

共1个答案

一尘不染

我不确定您的要求。我从您的问题中了解到,您想删除所有已关闭的工作电子邮件。试试这个

DELETE e FROM emailNotification e 
LEFT JOIN jobs j ON j.jobId = e.jobId 
WHERE j.active = 1 AND CURDATE() < j.closeDate
2020-05-17