从复杂的Select中更新MySql表

时间:2017-06-29 10:14:29

标签: 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查询吗?

1 个答案:

答案 0 :(得分:0)

Select查询中使用的任何条件都可以在Update查询中使用,当然可能需要稍加修改。你可以做的是以下几点:
meta_value

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')

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

修改:我假设id中的wp_posts是唯一值。