У меня есть две таблицы, один в течение крайних сроков задания, один для описывают задание. Каждое задание может взять состояние, и некоторые состояния означает, что крайние сроки заданий должны быть удалены из другой таблицы.
Я могу легко SELECT
задания/крайние сроки, который соответствует моим критериям с a 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
принадлежит 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 для правильного синтаксиса для использования близкого 'ЛЕВОГО СОЕДИНЕНИЯ
job
НА крайнем сроке job_id = задание job_id, ГДЕstatus
= 'szaml' в строке 1
Как я могу повернуть мой SELECT
в работу DELETE
запрос?
Нужно просто указать, к каким таблицам применять 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` ....
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, но попробуйте. Я предполагаю, что у вас есть столбец идентификаторов в таблице крайних сроков.