mysql - 如果 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 语句的任何提示?
解决方案
如果您使用正确的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
,为什么类型是字符串?最好使用某种数字类型。
推荐阅读
- angular-material - Mat输入值与显示文本
- python - Python 重新格式化 namedtuple 参数值
- kotlin - 在没有等待的情况下循环调用异步
- python - 从图像生成器绘制图像
- javascript - 如何在具有电子邮件数组的对象数组中找到第一个匹配的对象?
- mysql - 是否可以在 SQL 中使用 AND 运算符和 ON ?
- python - 为什么 PostMessage MOUSEEVENTF_LEFTDOWN 会导致接收应用程序崩溃?
- windows - Windows批处理文件插入空行/删除单行 - nmap输出
- php - 对象不返回带有教义的所有元素
- apdu - 发送 APDU 命令进行超轻 C 身份验证