繁体   English   中英

MySQL多个带有更新的Select语句

[英]MySQL Multiple Select Statements With An Update

我需要选择一个product_id的成本值,然后更新该product_id的最低值

我不需要合并这两个select语句,然后运行更新。 我需要从一个字段中获取成本,然后将多个公式设置为可以出售的最低价格。

##COST
SELECT value AS cost from catalog_product_entity_decimal
  where attribute_id = 79 and
        entity_id IN (select product_id from catalog_category_product)

##LOWEST
SELECT value AS lowest from catalog_product_entity_decimal
  where attribute_id = 164 and
        entity_id IN (select product_id from catalog_category_product)


update catalog_product_entity_decimal
   set value = (cost+3.5)/.84
   where attribute_id = 164 and
         entity_id IN (select product_id from catalog_category_product);

我将如何去做呢? 至少可以说,我是MySQL新手。
我已经尝试了UNION和Multiple Selects,但是我想我做错了。

您可以将SELECT用作UPDATE语句的子查询:

UPDATE catalog_product_entity_decimal
SET value = ( (
    SELECT value
    FROM catalog_product_entity_decimal
    WHERE attribute_id = 79
    AND entity_id IN (select product_id from catalog_category_product)
) + 3.5 ) / .84

或者,您可以将每个选择的结果存储在用户定义的变量( @cost )中:

SELECT @cost := `value`
FROM catalog_product_entity_decimal
WHERE attribute_id = 79
AND entity_id IN (select product_id from catalog_category_product);

UPDATE catalog_product_entity_decimal
SET value = ( @cost + 3.5 ) / .84;

另请参见: MySQL:根据查询结果设置用户变量

两种方法之间的区别在于,第一种方法是一个查询,而该方法使用两个不同的查询。 但是两者都需要一个接一个地执行,以确保变量不会被另一个请求中的另一个并发SELECT / UPDATE操作覆盖。

(您在哪里使用lowest ?)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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