如何在此 SELECT 语句的结果集中设置字段?
How to Set a Field within the results set of this SELECT statement?
所以我有一个 SQL 查询,我在 Magento 2 数据库上 运行ning。它成功列出了 'status' 为 'disabled' (2) 且库存数量大于 0 的所有项目。
select
`eav_attribute`.`attribute_id` AS `attribute_id`,
`catalog_product_entity_int`.`entity_id` AS `entity_id`,
`catalog_product_entity_int`.`value` AS `value`,
`eav_attribute`.`attribute_code` AS `attribute_code`,
`catalog_product_entity`.`sku` AS `sku`,
`catalog_product_entity`.`type_id` AS `type_id`,
`cataloginventory_stock_item`.`qty` AS `qty`
from
(((`eav_attribute`
join `catalog_product_entity_int` on ((`eav_attribute`.`attribute_id` = `catalog_product_entity_int`.`attribute_id`)))
join `catalog_product_entity` on ((`catalog_product_entity_int`.`entity_id` = `catalog_product_entity`.`entity_id`)))
join `cataloginventory_stock_item` on ((`catalog_product_entity_int`.`entity_id` = `cataloginventory_stock_item`.`product_id`)))
where
((`eav_attribute`.`attribute_code` = 'status') and
(`catalog_product_entity_int`.`value` = 2)) and
(`cataloginventory_stock_item`.`qty` > 0 )
它适用于选择结果集,并为我提供了满足这 2 个条件的准确项目列表。我将如何修改它以将此结果集中项目的 'status' 设置为 'Enabled' (1)。所以基本上,我只需要这些标准 运行,然后对于每个结果,将列 catalog_product_entity_int
.value
设置为 1 而不是 2.
您可以使用 update
:
update eav_attribute ea join
catalog_product_entity_int cpei
on ea.attribute_id = cpei.attribute_id join
catalog_product_entity cpe
on cpei.entity_id = cpe.entity_id join
cataloginventory_stock_item cisi
on cpei.entity_id = cisi.product_id
set cpei.value = 2
where ea.attribute_code = 'status' and
cpei.value = 2 and
ci.qty > 0 ;
请注意,我添加了 table 别名并删除了括号和反引号 -- 因此查询更容易编写和阅读。
所以我有一个 SQL 查询,我在 Magento 2 数据库上 运行ning。它成功列出了 'status' 为 'disabled' (2) 且库存数量大于 0 的所有项目。
select
`eav_attribute`.`attribute_id` AS `attribute_id`,
`catalog_product_entity_int`.`entity_id` AS `entity_id`,
`catalog_product_entity_int`.`value` AS `value`,
`eav_attribute`.`attribute_code` AS `attribute_code`,
`catalog_product_entity`.`sku` AS `sku`,
`catalog_product_entity`.`type_id` AS `type_id`,
`cataloginventory_stock_item`.`qty` AS `qty`
from
(((`eav_attribute`
join `catalog_product_entity_int` on ((`eav_attribute`.`attribute_id` = `catalog_product_entity_int`.`attribute_id`)))
join `catalog_product_entity` on ((`catalog_product_entity_int`.`entity_id` = `catalog_product_entity`.`entity_id`)))
join `cataloginventory_stock_item` on ((`catalog_product_entity_int`.`entity_id` = `cataloginventory_stock_item`.`product_id`)))
where
((`eav_attribute`.`attribute_code` = 'status') and
(`catalog_product_entity_int`.`value` = 2)) and
(`cataloginventory_stock_item`.`qty` > 0 )
它适用于选择结果集,并为我提供了满足这 2 个条件的准确项目列表。我将如何修改它以将此结果集中项目的 'status' 设置为 'Enabled' (1)。所以基本上,我只需要这些标准 运行,然后对于每个结果,将列 catalog_product_entity_int
.value
设置为 1 而不是 2.
您可以使用 update
:
update eav_attribute ea join
catalog_product_entity_int cpei
on ea.attribute_id = cpei.attribute_id join
catalog_product_entity cpe
on cpei.entity_id = cpe.entity_id join
cataloginventory_stock_item cisi
on cpei.entity_id = cisi.product_id
set cpei.value = 2
where ea.attribute_code = 'status' and
cpei.value = 2 and
ci.qty > 0 ;
请注意,我添加了 table 别名并删除了括号和反引号 -- 因此查询更容易编写和阅读。