2014-11-12 4 views
-1

Я пытаюсь использовать следующий код, чтобы использовать sql для удаления сообщений с моего сайта Wordpress, которые имеют одинаковое значение для мета-ключа 'source_link'. Каждый раз, когда я запускаю этот код, он не будет удалять дубликаты, и вместо этого я получаю ошибку базы данных на моем сайте. Кто-нибудь видит что-то неправильное в этом коде или знает, почему я получаю ошибки базы данных?Пытается удалить повторяющиеся сообщения, получая ошибку базы данных вместо

$wpdb->query("DELETE p, pm1 
FROM 
    $wpdb->posts as p, 
    $wpdb->postmeta as pm1, 
    $wpdb->postmeta as pm2 
WHERE 
    p.ID = pm1.post_id 
    AND pm1.post_id > pm2.post_id 
    AND pm1.meta_key = 'source_link' 
    AND pm1.meta_key = pm2.meta_key 
    AND pm1.meta_value = pm2.meta_value"); 

ответ

0

Какая ошибка базы данных вы получаете?

Я думаю, что ваша проблема может быть связана с тем, как вы ссылаетесь на несколько таблиц в инструкции. Я только что нашел this question на переполнение стека, в котором говорится, что ему нужно использовать оператор JOIN.

+0

Мой сайт больше не загружается, и вместо этого вы получаете сообщение об ошибке большого жира. Я постараюсь сделать что-то подобное. Я не эксперт sql, хотя вы бы знали, как использовать здесь заявление о соединении? – arian1123

+0

Здесь может быть сложно использовать JOIN, потому что в то время как таблицы P и PM1 связаны с помощью знака =, pm1 и pm2 связаны с помощью знака>. Попробуйте это: 'УДАЛИТЬ р, PM1 ОТ $ wpdb-> должностей р JOIN $ wpdb-> PostMeta как pm1 ON p.ID = pm1.post_id РЕГИСТРИРУЙТЕСЬ $ wpdb-> PostMeta в PM2 ON pm1.post_id > pm2.post_id ГДЕ И pm1.meta_key = 'source_link' И pm1.meta_key = pm2.meta_key И pm1.meta_value = pm2.meta_value' – bbrumm

+0

Тот же вопрос ... ошибка базы данных .. – arian1123

Смежные вопросы