[英]MySQL - Calculate a row value based on another row value in the same table
我有两个值:
我想将元值从第 2 列复制到第 1 列乘以当天的货币。 我首先尝试不进行乘法。
我尝试了很多方法,这是最后一个:
-- 1. start a new transaction
START TRANSACTION;
UPDATE
`_postmeta_test`
SET
`meta_value` = (
SELECT
t2.meta_value
FROM
`_postmeta_test` t1
JOIN `_postmeta_test` t2
ON t1.meta_id = t2.meta_id
WHERE `meta_key` = '_specific_country_regular_price' )
WHERE
meta_key = '_regular_price'
AND `post_id` IN (
SELECT
`ID`
FROM
`_posts`
WHERE
`post_type` = 'product'
AND `post_status` = 'publish'
);
ROLLBACK;
它不起作用,我已经筋疲力尽了。 任何人都可以帮忙吗?
在UPDATE
查询中使用连接,不需要所有这些子查询。
UPDATE _postmeta_test AS t1
JOIN _posts AS p ON t1.post_id = p.ID
JOIN _postmeta_test AS t2 ON t1.post_id = t2.post_id
SET t1.meta_value = t2.meta_value * @currency_of_the_day
WHERE t1.meta_key = '_regular_price'
AND t2.meta_key = '_specific_country_regular_price'
AND p.post_type = 'product' AND p.post_status = 'publish'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.