gpt4 book ai didi

mysql - 在插入更新请求中使用 var 不起作用

转载 作者:行者123 更新时间:2023-11-29 13:22:16 26 4
gpt4 key购买 nike

我尝试使用以下请求将值插入表中:

INSERT IGNORE itemmaster
(
SKU,
product_id
)
SELECT
@massimport_SKU := main.SKU,
@massimport_product_id := prd.entity_id
FROM itemmaster AS main
INNER JOIN product_entity AS prd ON prd.sku = main.SKU
ON DUPLICATE KEY UPDATE product_id = @massimport_product_id

SKU 是唯一的 key 。问题是product_id 的值始终是相同的id。如果我只执行选择,product_id 会不同,但插入后,product_id 列中只有一个值。我认为这是 var @massimport_product_id 的问题,因为如果我使用 ON DUPLICATE KEY UPDATE Product_id = prd.entity_id 而请求则可以正常工作。

但是因为它是一个自动生成的请求,在所有其他情况下都能很好地工作,我希望有人可以解释为什么要添加此附加内容。

谢谢

最佳答案

不要使用 session 变量,那是行不通的。

使用这个:

INSERT IGNORE itemmaster( SKU, product_id )
SELECT main.SKU, prd.entity_id
FROM itemmaster AS main
INNER JOIN product_entity AS prd ON prd.sku = main.SKU
ON DUPLICATE KEY UPDATE product_id = prd.entity_id
;

演示 --> http://www.sqlfiddle.com/#!2/592187/1

但是,此查询中的 INNER JOIN 始终返回 itemmaster 表中已存在的记录(SKU 列的值),因此 INSERT 在这种情况下是有用的,并且可以使用更简单的方法来完成相同的操作多表更新:

UPDATE itemmaster main
JOIN product_entity AS prd ON prd.sku = main.SKU
SET main.product_id = prd.entity_id;

演示:http://www.sqlfiddle.com/#!2/762eb4/1

关于mysql - 在插入更新请求中使用 var 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20660305/

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