繁体   English   中英

MySQL - 根据同一表中的另一个行值计算行值

[英]MySQL - Calculate a row value based on another row value in the same table

我有两个值:

  • 第 1 列:meta_key(_regular_price)、meta_value(double)
  • 第 2 列:meta_key(_specific_country_regular_price)、meta_value(double)

我想将元值从第 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM