Удаление с таблицы, если нет id такого в другой таблице - MySQL
Формулировка задачи:
Как составить запрос на проверку: если нет item_id в table2, то удалить в table1?
Пишу такой запрос, но в результате всю таблицу чистит, а надо именно проверку и чтобы не удаляло те, которые есть в table2
DELETE table1 FROM table1 INNER JOIN table2 WHERE table2.item_id != table1.item_id
Решение задачи: «Удаление с таблицы, если нет id такого в другой таблице»
textual
Листинг программы
DELETE FROM table1 WHERE (SELECT COUNT(*) FROM table2 WHERE table2.item_id = table1.item_id) = 0
Объяснение кода листинга программы
В данном коде происходит удаление записей из таблицы table1
, которые не имеют соответствующих записей в таблице table2
.
table1
- название таблицы, из которой происходит удаление записей.table2
- название таблицы, в которой проверяется наличие записей с соответствующимitem_id
.item_id
- название столбца в обеих таблицах, по которому происходит сравнение.COUNT(*)
- функция, которая подсчитывает количество записей в таблицеtable2
, удовлетворяющих условию.= 0
- условие, которое говорит, что удалению подлежат только те записи из таблицыtable1
, для которых в таблицеtable2
нет соответствующих записей. В итоге, данный запрос удаляет записи из таблицыtable1
, которые не имеют соответствующих записей в таблицеtable2
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д