mysql - 从复杂的 Select 中更新 MySql 表

标签 mysql

我有复杂的 SELECT 请求:

select meta_value
from wp_posts v
left join wp_postmeta pm on (pm.post_id = v.id)
left join wp_posts p on (v.post_parent = p.id)
where meta_key in ('_price','_regular_price')
and v.post_type = 'product_variation'
and p.id = '1743'
limit 0,100

它返回我 4(四)个需要的字段,其值如下

400
500
300
350

我需要更新这些值并将它们的值设置为相等,例如 1000

我可以根据我的 SELECT 运行 UPDATE 查询吗?

最佳答案

Select 查询中使用的任何条件都可以在 Update 查询中使用,当然它可能需要一些修改。针对您的情况,您可以执行以下操作:
元值

Update wp_posts 
set meta_value = 1000
where id IN (select v.id
            from wp_posts v
            left join wp_postmeta pm on (pm.post_id = v.id)
            left join wp_posts p on (v.post_parent = p.id)
            where v.meta_key in ('_price','_regular_price')
                and v.post_type = 'product_variation'
                and p.id = '1743')

请注意,我没有测试过这个,所以我不完全确定它会起作用。确保在任何此类查询之前备份数据库。希望它能给您带来想要的结果。

编辑:我假设 wp_posts 中的 id 是一个唯一值。

关于mysql - 从复杂的 Select 中更新 MySql 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44822319/

相关文章:

mysql - 如何使用特定条件的最高值对列表进行排序?

mysql - 匹配单个表中的多个记录

php - http ://localhost/myphpadmin/index. php 只显示代码

mysql - 从多个表中获取具有条件的最新值

mysql - 如何删除数据库中的所有表?

MySQL 过滤、计数、排列

php - MySQL 不会更新表中最后一行的最后一个单元格

PHP、MySQL、空间数据和设计

MySQL 基于日期列按周分组?

php - 如何在数据库事件发生时自动发送Web推送通知? Angular + PHP + MySQL