mysql - returning - postgresql delete join




Удаление строк с помощью MySQL LEFT JOIN (2)

У меня есть две таблицы, одна для сроков работы, одна для описания работы. Каждое задание может принимать статус, а некоторые статусы означают, что крайние сроки заданий должны быть удалены из другой таблицы.

Я могу легко 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 относится к таблице 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, для правильного синтаксиса для использования рядом с «РАБОТАМИ LEFT JOIN ON deadline.job_id = job.job_id WHERE 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` ....

Если вы используете «table as», укажите его для удаления.

В примере я удаляю все строки таблицы_1, которые не существуют в таблице_2.

DELETE t1 FROM `table_1` t1 LEFT JOIN `table_2` t2 ON t1.`id` = t2.`id` WHERE t2.`id` IS NULL






sql-delete