2015-02-10 5 views
0

У меня проблемы с оператором mySQL, который, я уверен, не является сложным, но я не так хорошо разбираюсь в mySQL, так что теперь я застрял. База данных, о которой я говорю, это wordpress, поэтому, надеюсь, многие люди поймут структуру, но я сделаю все возможное, чтобы объяснить, что мне нужно и что я пробовал ...столбец обновления MySQL из другого столбца с таким же именем

Моя проблема заключается в следующем:

У меня есть некоторые данные, которые мне нужно копировать из одного отрывка в другой ... В основном, я ввел заголовок на загрузку вложений, но мне нужна эта надпись для копирования в post_excerpt на 'download 'вместо post_types. Они связаны в базе данных некоторыми метаданными, называемыми «_download_attachment_id» Итак, мне нужно установить «загрузить» post_excerpt в файл post_excerpt, где идентификатор «download» равен meta_value (идентификатор прикрепления) в таблице postmeta.

Я понял, что вложение «caption» хранится в столбце «post_excerpt» внутри wp_posts, поэтому я смущен тем, как обновлять один post_excerpt до другого значения post_excerpts.

Чтобы попробовать и сделать его проще, я создал VIEW, используя этот SQL

CREATE VIEW `attachment_excerpt` AS 
SELECT a.ID aid, a.post_excerpt as excerpt, b.post_id pid 
FROM rpz_posts a, rpz_postmeta b 
WHERE a.ID = b.meta_value 
AND b.meta_key = '_download_attachment_id' 

Это дает мне представление, что есть все, что нужно с разными названиями. Теперь, с этой установкой зрения я могу использовать следующий SQL заявление, чтобы захватить все, что нужно ...

SELECT rpz_posts.ID, attachment_excerpt.excerpt 
FROM rpz_posts, attachment_excerpt 
WHERE rpz_posts.ID = attachment_excerpt.pid 
AND rpz_posts.post_excerpt = ''; 

Это дает мне идентификатор поста, мне нужно обновить, и текст отрывок, который я необходимо обновить его to.What я не могу заставить работать это обновление ... Я попытался это, но он не работает:

UPDATE rpz_posts SET rpz_posts.post_excerpt = attachment_excerpt.excerpt 
WHERE rpz_posts.ID = attachment_excerpt.pid 
AND rpz_posts.post_excerpt = ''; 

ошибки я получаю: # 1054 - Неизвестный столбец «attachment_excerpt .pid 'in' where clause '

Я понял, что это длинный пост, поэтому я надеюсь, что я не переусердствовал омплицировал его. Если кто-то может указать мне в правильном направлении, я буду вечно благодарен!

ответ

1

Ваше обновление должно выглядеть следующим образом:

UPDATE rpz_posts,attachment_excerpt 
SET rpz_posts.post_excerpt = attachment_excerpt.excerpt 
WHERE rpz_posts.ID = attachment_excerpt.pid 
AND rpz_posts.post_excerpt = ''; 

Это потому, что вы должны указать две таблицы, связанные с тем, чтобы выполнить матч.

MySQL docs по обновлению.

+1

Отлично! Спасибо огромное! :) –

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