将MySQL表中的数据替换为另一个表中的数据

时间:2010-04-04 22:26:35

标签: mysql database

我正在尝试修改现有的MySQL数据库以用于新的应用程序。 我有一个项目表(table_items),它有多个字段,包括“ItemID”和“ItemName”。 我有另一个表(table_list),其中包含“ItemName”,但没有ItemID。我需要更新此表以包含ItemID而不是ItemName,或者创建一个新表,当table_list.ItemName = table_items.ItemName时,从table_items导入ItemID而不是ItemName。

我尝试过以下方法: UPDATE table_list A,table_items B. SET A.ItemName = B.ItemID WHERE A.ItemName = B.ItemName

当前表有超过500,000行,每次我在PHPMyAdmin中尝试这个时,我都会收到错误“MySQl服务器已经消失”。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

停止mysql服务,在my.cnf/etc mysql目录)中找到文件/etc/my.cnf,打开它,找到可能设置为1MB的变量max_allowed_packet,改变它以满足您的需求。

此外,而不是:

UPDATE table_list A, table_items B SET A.ItemName = B.ItemID WHERE A.ItemName = B.ItemName

试试这个:

UPDATE table_list A SET ItemName = (SELECT ItemID FROM table_items B WHERE A.ItemName = B.ItemID);