[英]Mysql update column with value if id is in another table
我有兩張表,一張是產品,一張是與類別相關的產品,兩張表都如下所示:
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
中存儲一個數字,為什么類型是字符串? 最好使用某種數字類型。
我發現錯誤,正確的查詢是:
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;
再次感謝你,戈登·利諾夫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.