更新2个表

时间:2013-12-06 16:22:16

标签: mysql subquery inner-join

我在oscommerce上。我需要更新我的products_quantity但我只有products_name

第一张桌子 产品 --products_id --products_quantity

PRODUCTS_DESCRIPTION --products_id --products_name

我的第一次测试:

UPDATE `products` 
SET `products_quantity`='8'
where `products_id` = (SELECT `products_id` FROM `products_description` WHERE `products_name`='TOP CAISSE PLETSCHER')

错误的语法

我的第二次测试

UPDATE `products` 
SET `products_quantity`='8'
where `products_id` = "SELECT `products_id` FROM `products_description` WHERE `products_name`='TOP CAISSE PLETSCHER'"

没有错误,但我的产品没有更新。我认为这个方法不支持我的mysql版本:3.23.58

我的第三次测试:

UPDATE `products`
SET `products`.`products_quantity`='8'
FROM `products` 
INNER JOIN `products_description`
WHERE `products`.`products_id` = `products_description`.`products_id`
AND `products_description`.`products_name`='TOP CAISSE PLETSCHER'

我有这个错误:

You have an error in your SQL syntax near 'FROM  `products`  INNER  JOIN  `products_description`  WHERE  `products`.`produc' at line 1

我的解决方案已经用完了。如果你能告诉我出了什么问题,我会很感激。

我正在使用MySQL 3.23.58

1 个答案:

答案 0 :(得分:0)

我猜您正在使用PHP连接数据库。 你不能只对它使用两个查询吗?

首先,

SELECT `products_id` FROM `products_description` WHERE `products_name`='TOP CAISSE PLETSCHER'

,然后将结果保存到数组变量,并在循环更新中,例如:

foreach($result_array as $id) {
    UPDATE `products` 
    SET `products_quantity`='8'
    WHERE `products_id` = $id
}

尝试告诉我们是否有帮助。