如果id在另一个表中,则使用值更新Mysql列
我有两个表,一个是产品,一个是与类别关联的产品,两个表看起来都像:如果id在另一个表中,则使用值更新Mysql列,mysql,sql,sql-update,Mysql,Sql,Sql Update,我有两个表,一个是产品,一个是与类别关联的产品,两个表看起来都像: 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, `categor
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_类别中的product_id等于某个数字,我需要将oclh_product.mpn从表oclh_product更新为26
我正在尝试以下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 `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';
没有成功。有关此更新语句的任何提示?如果使用正确的
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
中存储一个数字,为什么该类型是字符串?最好使用某种数字类型。我发现错误,正确的查询是:
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;
再次感谢你,戈登·林诺夫。你为什么不认为那些查询有效?我不知道为什么,但我的查询无效,但你的查询有效。谢谢,戈登@伊万迪莫夫。查看
join
条件。这将在两个表中使用产品id
。