gpt4 book ai didi

mysql - 使用 JOIN 和子查询更新表

转载 作者:行者123 更新时间:2023-11-29 14:03:13 25 4
gpt4 key购买 nike

我正在尝试运行一个联接到其他表的 UPDATE,并且在 WHERE 子句中有一个子查询。但是,我收到此错误:

1093 - You can't specify target table 'csi' for update in FROM clause

这是我的查询:

UPDATE mage_cataloginventory_stock_item csi
INNER JOIN mage_catalog_product_entity cpe
ON csi.product_id = cpe.entity_id
SET csi.Is_in_Stock = 0
WHERE cpe.sku IN (
SELECT cpe.sku
FROM mage_catalog_product_entity cpe
INNER JOIN mage_cataloginventory_stock_item CSI
ON CSI.product_id = cpe.entity_id
INNER JOIN mage_cataloginventory_stock_status CISS
ON CSI.product_id = CISS.product_ID
INNER JOIN mage_catalog_product_entity_int cpei
ON cpe.entity_id = cpei.entity_id
WHERE type_id = 'simple'
AND cpei.attribute_id = 80
AND CSI.Qty = 0 AND cpei.value = 1
)

我从其他来源看到,您无法指定在子查询中更新的表,但我不知道还能怎么做。希望有人可以帮助我指出正确的方向,以便根据我的需要使其工作。谢谢!

最佳答案

您可以将子查询中的 cpeCSI 替换为 cpe2CSI2 或任何名称你选择。

上面的内容根本不会考虑您更新的表的当前行。

这可能不是您想要的。在这种情况下,请尝试:

UPDATE mage_cataloginventory_stock_item csi
INNER JOIN mage_catalog_product_entity cpe
ON csi.product_id = cpe.entity_id
SET csi.Is_in_Stock = 0
WHERE cpe.sku IN (
SELECT cpe.sku
/* removed joins */
FROM mage_cataloginventory_stock_status CISS
INNER JOIN mage_catalog_product_entity_int cpei
ON cpe.entity_id = cpei.entity_id
WHERE type_id = 'simple'
AND cpei.attribute_id = 80
AND cpei.value = 1
/* moved join condition here */
AND cpe.product_id = CISS.product_ID
AND CSI.Qty = 0
)

根据一些情况,下面的代码可以执行相同的操作:(例如,cpe.sku 必须是唯一的,否则您可能可以让它与另一个连接一起使用)

UPDATE mage_cataloginventory_stock_item csi
INNER JOIN mage_catalog_product_entity cpe
ON csi.product_id = cpe.entity_id
INNER JOIN mage_cataloginventory_stock_status CISS
ON cpe.product_id = CISS.product_ID
INNER JOIN mage_catalog_product_entity_int cpei
ON cpe.entity_id = cpei.entity_id
SET csi.Is_in_Stock = 0
WHERE type_id = 'simple'
AND cpei.attribute_id = 80
AND cpei.value = 1
AND CSI.Qty = 0

关于mysql - 使用 JOIN 和子查询更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14761849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com