Удалить недействительные записи, связанные с собственной проблемой - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть comments таблица.Структура, подобная этой

id  parent_id  user_id  comment  
--  ---------  -------  -------

Я хочу удалить записи, в которых есть неверные связанные значения.
Для удаления записей, где user_id является недопустимым значением, я использую этот запрос

DELETE FROM `comments` WHERE `user_id` NOT IN (SELECT `id` FROM `users`)

, но когда япопытаться удалить записи, в которых parent_id является недействительными данными. Я использую этот запрос

DELETE FROM `comments` WHERE `parent_id` NOT IN (SELECT `id` FROM `comments`)

Я получаю эту ошибку

Код ошибки: 1093 Невозможно указать целевую таблицу 'comments' дляобновление в предложении FROM

1 Ответ

1 голос
/ 26 сентября 2019

Вы, вероятно, можете делать то, что хотите, с каскадными ограничениями внешнего ключа.

Тем не менее, вы можете сделать это, используя left join:

DELETE c
    FROM comments c LEFT JOIN
         comments cp
         ON c.parent_id = cp.id
    WHERE cp.id IS NULL AND
          c.parent_id IS NOT NULL;

Обратите внимание на условие c.parent_id IS NOT NULL.Это подразумевается (почти) любым сравнением, которое вы проводите в столбце, включая NOT IN.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...