MySQL 从另一列同名更新列

MySQL update column from another column of same name

我对一个 mySQL 声明有点麻烦,我确定它并不复杂,但我不太精通 mySQL 所以现在我'我卡住了。我说的数据库是 wordpress,所以希望很多人能理解这个结构,但我会尽力解释我需要什么和我试过什么...

我的问题是:

我有一些数据需要从一个摘录复制到另一个摘录... 基本上,我已经在大量附件中输入了标题,但我需要将该标题复制到 'download' post_types 上的 post_excerpt。它们通过一些名为“_download_attachment_id”的元数据链接到数据库中 因此,我需要将 'download' post_excerpt 设置为附件 post_excerpt,其中 'download' ID 等于 [=52= 中的 meta_value(附件 ID) ]元table.

我意识到附件 'caption' 存储在 wp_posts 的 'post_excerpt' 列中,所以我很困惑如何将一个 post_excerpt 更新为另一个 post_excerpts的价值。

为了尝试让它更简单,我使用此 SQL

创建了一个 VIEW
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 = '';

这给了我 post 我需要更新的 ID,以及我需要更新它的摘录文本 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 - 'where clause'

中的未知列 'attachment_excerpt.pid'

我意识到这是一个很长的 post,所以我希望我没有 over-complicated 它。如果有人能指出正确的方向,我将永远感激不已!

您的更新应如下所示:

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 更新中。