sql выбирает и удаляет из той же таблицы

#mysql

#mysql

Вопрос:

Я пытаюсь запустить этот SQL-запрос, чтобы очистить старые данные

 DELETE FROM wp_postmeta 
where wp_postmeta.post_id=(
 SELECT post_id FROM wp_postmeta pm 
 WHERE (meta_key like '_form_id') AND 
 pm.post_id NOT IN (SELECT ID FROM wp_posts))
 

Получение ошибки

«Таблица «wp_postmeta» указывается дважды, как в качестве целевого объекта для «УДАЛЕНИЯ», так и в качестве отдельного источника данных»

Что такое правильный SQL?

Спасибо.

Комментарии:

1. не могли бы вы попробовать использовать in вместо = (eqaul)

2. Если вы не используете сопоставление с учетом регистра, «нравится» здесь бесполезно

Ответ №1:

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

  DELETE FROM wp_postmeta WHERE meta_key LIKE '%_form_id'
    AND post_id NOT IN (SELECT ID FROM wp_posts);
 

Комментарии:

1. Это выглядит как подзапрос