我需要选择一个 product_id 的成本值,然后更新该 product_id 的最低值
我不需要合并这两个选择语句,然后运行更新。 我需要从一个字段中获取成本,然后乘以公式来设置我可以卖出的最低价格。
##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: Set user variable from result of query
这两种方法的区别在于第一种方法是一个查询,而该方法使用两个不同的查询。但是两者都需要一个接一个地执行,以确保变量不会被来自另一个请求的另一个并发 SELECT/UPDATE 操作覆盖。
(你在哪里使用lowest
?)
关于带有更新的 MySQL 多选语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24580872/