首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果id在另一个表中,则使用值更新Mysql列

如果id在另一个表中,则使用值更新Mysql列
EN

Stack Overflow用户
提问于 2020-11-09 22:52:11
回答 2查看 22关注 0票数 0

我有两个表,一个有产品,另一个有分类的产品,两个表看起来都像:

代码语言:javascript
运行
复制
CREATE TABLE `oclh_product` (
  `product_id` int(11) NOT NULL,
  `mpn` varchar(64) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `oclh_product_to_category` (
  `product_id` int(11) NOT NULL,
  `category_id` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

我需要从表oclh_product中更新oclh_product.mpn,如果oclh_product_to_category中的product_id等于某个数字,例如等于26。

我尝试像这样进行sql查询:

代码语言:javascript
运行
复制
UPDATE `oclh_product` INNER JOIN `oclh_product_to_category`
    ON oclh_product_to_category.category_id = oclh_product.product_id
SET oclh_product.mpn = '99999' WHERE `oclh_product_to_category`.`category_id` = 26; 

就像这样:

代码语言:javascript
运行
复制
UPDATE `oclh_product` INNER JOIN `oclh_product_to_category`
    ON oclh_product_to_category.category_id = '26'
SET oclh_product.mpn = '99999';

没有成功。对于这个UPDATE语句有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-09 22:54:54

如果使用正确的JOIN条件,您的第一个查询应该可以工作。使用TRable别名可以更轻松地执行操作:

代码语言:javascript
运行
复制
UPDATE oclh_product p INNER JOIN 
       oclh_product_to_category pc
       ON pc.product_id = p.product_id
    SET p.mpn = '99999'
WHERE pc.category_id = 26; 

如果您在mpn中存储数字,为什么类型是字符串?最好使用某种类型的数字类型。

票数 1
EN

Stack Overflow用户

发布于 2020-11-09 23:57:31

我发现了错误,正确的查询是:

代码语言:javascript
运行
复制
UPDATE `oclh_product` INNER JOIN `oclh_product_to_category`
    ON oclh_product_to_category.product_id = oclh_product.product_id
SET oclh_product.mpn = '99999' WHERE `oclh_product_to_category`.`category_id` = 26;

再次谢谢你戈登·利诺夫。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64753920

复制
相关文章

相似问题

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