Я использую WordPress.Я хотел бы удалить дубликаты сообщений из таблицы wp_post
.Условие для определения, является ли сообщение дублирующим или нет, основано на том, имеют ли два разных мета-ключа одинаковые мета-значения.
Я натолкнулся на этот запрос, чтобы удалить пост, в котором дублируется одно мета-значение:
DELETE p, pm1
FROM
{$wpdb->posts} p,
{$wpdb->postmeta} pm1,
{$wpdb->postmeta} pm2
WHERE
p.ID = pm1.post_id
AND pm1.post_id > pm2.post_id
AND pm1.meta_key = '_email'
AND pm1.meta_key = pm2.meta_key
AND pm1.meta_value = pm2.meta_value
Я хотел бы добиться чего-то вроде этого:
DELETE p, pm1
FROM
{$wpdb->posts} p,
{$wpdb->postmeta} pm1,
{$wpdb->postmeta} pm2
WHERE
p.ID = pm1.post_id
AND pm1.post_id > pm2.post_id
AND pm1.meta_key = '_email'
AND pm1.meta_key = pm2.meta_key
AND pm1.meta_value = pm2.meta_value
AND pm1.meta_key = '_list'
AND pm1.meta_key = pm2.meta_key
AND pm1.meta_value = pm2.meta_value
Я попытался выполнить следующее:
DELETE p, pm1
FROM
{$wpdb->posts} p,
{$wpdb->postmeta} pm1,
{$wpdb->postmeta} pm2
WHERE
p.ID = pm1.post_id
AND pm1.post_id > pm2.post_id
AND pm1.meta_key = '_email'
AND pm1.meta_key = pm2.meta_key
AND pm1.meta_value = pm2.meta_value
AND p.ID IN (
SELECT p, pm1
FROM
{$wpdb->posts} p,
{$wpdb->postmeta} pm1,
{$wpdb->postmeta} pm2
WHERE
p.ID = pm1.post_id
AND pm1.post_id > pm2.post_id
AND pm1.meta_key = '_list'
AND pm1.meta_key = pm2.meta_key
AND pm1.meta_value = pm2.meta_value
)
, но получил сообщение об ошибке в MySQL.Что я делаю не так?
Любые отзывы приветствуются!Спасибо!