我试图根据 http://www.xaprb.com/blog/2006/06/23/how-to-select-from-an-update-target-in-mysql/
UPDATE item t
SET t.item_keyword =
(SELECT MAX(i.item_keyword) AS item_keyword
FROM (SELECT item_keyword, item_name, cd_id2 FROM item) AS i
WHERE t.item_name = i.item_name
AND i.cd_id2 = '2010'
GROUP BY i.item_name
)
WHERE t.ca_id2 ='3010'
来构建你的查询,也可以试试这个版本太
UPDATE item t
INNER JOIN (SELECT item_keyword, item_name, cd_id2 FROM item) AS i
SET t.item_keyword =
(SELECT MAX(i.item_keyword) AS item_keyword
FROM i
WHERE t.item_name = i.item_name
AND i.cd_id2 = '2010'
GROUP BY i.item_name
)
WHERE t.ca_id2 ='3010'
对不起,我没有的MySQL 4的周围,所以你必须测试上述查询。
其他读数:
如果上面的查询不工作,你可以尝试使用,而不是子查询的临时表:
http://sqlfiddle.com/#!2/13ccb/1
CREATE TEMPORARY TABLE s
SELECT item_name,
MAX(item_keyword) AS item_keyword
FROM item
WHERE cd_id2 = '2010'
AND item.item_name IN (SELECT item_name FROM item WHERE item.ca_id2='3010')
GROUP BY item_name;
UPDATE item t
INNER JOIN s ON t.item_name = s.item_name
SET t.item_keyword = s.item_keyword
WHERE t.ca_id2 ='3010';
DROP TEMPORARY TABLE s;
Yowza ....'4.0.22'。我都支持较老的版本,但这是_ancient_。但是:[_“目前,您无法更新表并从子查询中的同一表中进行选择。”_](http://dev.mysql.com/doc/refman/4.1/en/update.html)。 – Wrikken
还有别的办法吗? – user1494207
请参阅http://www.xaprb.com/blog/2006/06/23/how-to-select-from-an-update-target-in-mysql/ – biziclop