我想做这样的事,但似乎我就是做不到:

UPDATE products p2
SET
manufacturer =
(
SELECT manufacturer
FROM products p, manufacturers m, etc.
WHERE
...other stuff...
p.name LIKE CONCAT('%',m.name,'%')
AND p.id = p2.id
)
WHERE manufacturer = 0

错误是:
#1093-不能为update in FROM子句指定目标表“p2”
问题是我在表中有一个manufacturer字段,但是有些manufacturers名称在product_name-string而不是manufacturer字段中,所以我必须根据product_name获取制造商id,并更新product表的制造商id。
我可以分两步来做,但我想一步来做。

最佳答案

关于http://dev.mysql.com/doc/refman/5.0/en/subquery-errors.html的同一个错误的一条评论说,“如果您同时使用子查询读取相同的数据,MySQL不允许更新或删除表的数据。”

关于mysql - MySQL-使用内部选择进行更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9292853/

10-10 16:24