Удаление с таблицы, если нет 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.

  1. table1 - название таблицы, из которой происходит удаление записей.
  2. table2 - название таблицы, в которой проверяется наличие записей с соответствующим item_id.
  3. item_id - название столбца в обеих таблицах, по которому происходит сравнение.
  4. COUNT(*) - функция, которая подсчитывает количество записей в таблице table2, удовлетворяющих условию.
  5. = 0 - условие, которое говорит, что удалению подлежат только те записи из таблицы table1, для которых в таблице table2 нет соответствующих записей. В итоге, данный запрос удаляет записи из таблицы table1, которые не имеют соответствующих записей в таблице table2.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.667 из 5
Похожие ответы