首页 > 解决方案 > 如果 id 在另一个表中,Mysql 用值更新列

问题描述

我有两张表,一张是产品,一张是与类别相关的产品,两张表看起来像:

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_to_category 中的 product_id 等于某个数字(例如 26),我需要从表 oclh_product 更新 oclh_product.mpn。

我尝试这样的 sql 查询:

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; 

像这样:

UPDATE `oclh_product` INNER JOIN `oclh_product_to_category`
    ON oclh_product_to_category.category_id = '26'
SET oclh_product.mpn = '99999';

没有成功。此 UPDATE 语句的任何提示?

标签: mysqlsqlsql-update

解决方案


如果您使用正确的JOIN条件,您的第一个查询应该可以工作。TRable 别名使其更易于遵循:

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,为什么类型是字符串?最好使用某种数字类型。


推荐阅读