MySQL - 使用所选内容更新行

标签 mysql sql wordpress sql-update

我正在尝试对 MySQL 数据库中的某些列进行批量更新。这是一个 WordPress/WooCommerce 网站,因此其中一些列可能看起来很熟悉。

基本上我想做的是从 wp_posts 表中的 post_content 列中获取内容,将其与该帖子 ID 的元值“_sku”连接起来,然后重新更新某个 post_content 字段。

我想我已经很接近了。我的选择查询工作正常,但现在我只是尝试将其包装在更新查询中。这是我所拥有的:

UPDATE wp_posts as wp
SET
wp.post_content =
(
    SELECT concat(wp2.post_content,' (SKU:',wpmeta.meta_value,')') as new_content FROM (SELECT * FROM `wp_posts` as wp2) INNER JOIN `wp_postmeta` as wpmeta ON wp2.ID=wpmeta.post_id WHERE wp2.post_type = 'product' AND wpmeta.meta_key = "_sku"
)

我得到的错误是:

每个派生表必须有自己的别名。

据我所知,我在选择查询中的所有内容上都使用了别名,所以我一定是错过了一些小东西。我查找了其他一些类似的问题,但没有一个答案涉及嵌套在更新查询中的选择查询,因此它们没有太大帮助。

任何帮助将不胜感激。谢谢!

最佳答案

你的逻辑有点难以理解。但是,您应该通过 update 中的 join 来执行此操作。像这样的事情:

UPDATE wp_posts wp JOIN
       wp_postmeta pm
       ON wp.id = pm.post_id AND pm.meta_key = '_sku'
    SET wp.post_content = CONCAT(wp.post_content, ' (SKU:', pm.meta_value, ')')
    WHERE wp.post_type = 'product';

关于MySQL - 使用所选内容更新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37106888/

相关文章:

mysql - Django 测试 django.db.utils.ProgrammingError : (1146, "Table ' DB.Table'不存在")

Java MySQL 连接服务器

php - WordPress PHP fatal error : Call to undefined function language_attributes()?

php - 图像未显示在cloud9上的html5表格中

mysql - SQL 联合查询错误

mysql - 分组用户,MySQL 上匹配的连续值

php - Laravel:从数据库中删除时如何处理依赖关系

sql - 不知道如何编写复杂的 SQL 查询

wordpress - Browsersync 未设置正确的本地 url

php - 从 wordpress 页面获取特定的 div