首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL从一个表中更新单元格到指定单元格

MySQL从一个表中更新单元格到指定单元格
EN

Stack Overflow用户
提问于 2021-02-01 15:15:30
回答 2查看 30关注 0票数 0

我需要从表ps_product获取id_product的价值生态税,并在表ps_product_shop中的同一id_product上更新价值生态税。

发出以下命令:

代码语言:javascript
复制
UPDATE `ps_product_shop` 
SET `ecotax` = (SELECT `ecotax` FROM `ps_product`
                WHERE ps_product.`id_product` = 
                      ps_product_shop.`id_product`);

但是得到:

#1048 -列“生态税”不能为空

值为0.0000或0.1580,依此类推。在SELECT中也尝试了,但是没有帮助。命令由phpMyAdmin处理。

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-01 15:18:45

你可以遵循两种方式:

第一项:

代码语言:javascript
复制
UPDATE ps_product_shop 
SET ecotax = 
    (SELECT ps_product.ecotax FROM ps_product WHERE ps_product.id_product = 
    ps_product_shop.id_product)
WHERE EXISTS(SELECT 1 FROM ps_product WHERE ps_product.id_product = 
    ps_product_shop.id_product)

第二部分:

代码语言:javascript
复制
UPDATE ps_product_shop 
SET ecotax = 
    (SELECT ps_product.ecotax FROM ps_product WHERE ps_product.id_product = 
    ps_product_shop.id_product)
WHERE (SELECT ps_product.ecotax FROM ps_product WHERE ps_product.id_product = 
    ps_product_shop.id_product) IS NOT NULL
票数 0
EN

Stack Overflow用户

发布于 2021-02-01 15:19:17

我可以解释这一点的唯一可能原因是,您没有使用适当的别名对子查询中的ecotax进行限定。试着这样做:

代码语言:javascript
复制
UPDATE ps_product_shop ps
SET ecotax = (SELECT p.ecotax FROM ps_product p
              WHERE p.id_product = ps.id_product);

但实际上,我建议在这里利用MySQL的update语法(假设您实际使用的是MySQL):

代码语言:javascript
复制
UPDATE ps_product_shop ps
LEFT JOIN ps_product p
    ON p.id_product = ps.id_product
SET
    ecotax = ps.ecotax;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65995211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档