left-join - MySQL LEFT JOIN,删除行?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (3)
  • 关注 (0)
  • 查看 (75)

我有两个表格,一个是工作截止日期,一个是工作描述。每个工作都可以采取一种状态,一些状态意味着工作的最后期限必须从另一个表中删除。

我可以很容易地SELECT达到符合我的标准的工作/最后期限LEFT JOIN

SELECT * FROM `deadline`
LEFT JOIN `job` ON deadline.job_id = job.job_id
WHERE `status` = 'szamlazva'
OR `status` = 'szamlazhato'
OR `status` = 'fizetve'
OR `status` = 'szallitva'
OR `status` = 'storno'

(不status属于jobdeadline

但是,当我想删除这些行deadline,MySQL会引发错误。我的查询是:

DELETE FROM `deadline`
LEFT JOIN `job`
ON deadline.job_id = job.job_id
WHERE `status` = 'szamlazva'
OR `status` = 'szamlazhato'
OR `status` = 'fizetve'
OR `status` = 'szallitva'
OR `status` = 'storno'

MySQL错误没有说什么:

你的SQL语法有错误; 检查与您的MySQL服务器版本相对应的手册,以便在第1行的'LEFT JOIN jobON deadline.job_id = job.job_id WHERE status='szaml' 附近使用正确的语法

我怎样才能把我SELECT的工作DELETE查询?

提问于
用户回答回答于
DELETE FROM deadline where ID IN (
    SELECT d.ID FROM `deadline` d LEFT JOIN `job` ON deadline.job_id = job.job_id WHERE `status` =  'szamlazva' OR `status` = 'szamlazhato' OR `status` = 'fizetve' OR `status` = 'szallitva' OR `status` = 'storno');

我不确定这种子查询在MySQL中是否有效,但是尝试一下。我假设你在截止日期表中有一个ID列。

用户回答回答于

如果你正在使用“表格”,则将其指定为删除。

在这个例子中,我删除了table_2中不存在的所有table_1行。

DELETE t1 FROM `table_1` t1 LEFT JOIN `table_2` t2 ON t1.`id` = t2.`id` WHERE t2.`id` IS NULL
用户回答回答于

你只需指定要在哪些表上应用DELETE...

只删除deadline行:

DELETE `deadline` FROM `deadline` LEFT JOIN `job` ....

删除deadline and job行:

DELETE `deadline`, `job` FROM `deadline` LEFT JOIN `job` ....

只删除job行:

DELETE `job` FROM `deadline` LEFT JOIN `job` ....

扫码关注云+社区

领取腾讯云代金券