簡體   English   中英

如果 id 在另一個表中,Mysql 用值更新列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM