具有更新的MySQL多选语句

时间:2014-07-04 21:23:36

标签: mysql sql

我需要选择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,但我想我做错了。

1 个答案:

答案 0 :(得分:0)

您可以使用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: Set user variable from result of query

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

(你在哪里使用lowest?)