大概需求是这样的,有两个表,tablea和tableb,他有相同的id,现在需要将表A中的fielda数据更新至表B中的fielda列,换句话说,要更新表B中的fieldb列,其数据来源于表A的fielda列。貌似mysql不支持update select这种,下面是解决方案:
update tableb b,(select b.id as aid,a.fielda as fieldc from tablea a,tableb b where a.id=b.id group by aid) c set b.fieldb=c.fieldc where b.id=c.aid经测试,运行正常。数据表如下:
表A数据结构及数据如下:
CREATE TABLE IF NOT EXISTS `tablea` ( `id` int(11) NOT NULL AUTO_INCREMENT, `fielda` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ; INSERT INTO `tableb` (`id`, `fielda`) VALUES (1, 2), (2, 2), (3, 2), (4, 3), (5, 5), (6, 10), (7, 4), (8, 50);表B数据结构及数据如下:
CREATE TABLE IF NOT EXISTS `tableb` ( `id` int(11) NOT NULL AUTO_INCREMENT, `fieldb` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ; INSERT INTO `tableb` (`id`, `fieldb`) VALUES (1, 1), (2, 1), (3, 1), (4, 1), (5, 1), (6, 1), (7, 1), (8, 1);经过执行文中解决方案的sql命令,B表的fieldb中的数据变为与A表一致。