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