我有两个表,一个用于工作截止日期,另一个用于描述工作。每个作业都可以有一个状态,有些状态意味着作业的截止日期必须从另一个表中删除。
我可以使用LEFT JOIN
轻松地SELECT
符合我的标准的工作/截止日期
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
属于job
表,不属于deadline
)
但是当我想从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
job
ON deadline.job_id = job.job_id WHEREstatus
= 'szaml‘的正确语法
如何将我的SELECT
转换为有效的DELETE
查询?
发布于 2010-05-04 14:26:52
您只需指定要对哪些表应用DELETE
即可。
仅删除deadline
行:
DELETE `deadline` FROM `deadline` LEFT JOIN `job` ....
删除deadline
和job
行:
DELETE `deadline`, `job` FROM `deadline` LEFT JOIN `job` ....
仅删除job
行:
DELETE `job` FROM `deadline` LEFT JOIN `job` ....
发布于 2013-05-16 20:05:01
如果您使用的是"table as",则指定要删除的表。
在示例中,我删除了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
发布于 2010-05-04 14:24:41
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中是否有效,但可以尝试一下。我假设您在deadline表中有一个ID列。
https://stackoverflow.com/questions/2763206
复制相似问题