求一条MySql

梅子 2014-03-10 01:34:01
表table:
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| t_id | bigint(21) | NO | | 0 | |
| name | varchar(32) | YES | | NULL | |
| g_ id | bigint(21) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+

表g_table
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| g_id | bigint(21) | NO | | 0 | |
| name | varchar(32) | YES | | NULL | |


两表内数据都有近百万条

现在要更新table表的g_id字段,对应的条件为table.name=g_talbe.name

name字段是唯一的

这条sql要怎么写啊?
求大大指教

...全文
125 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2014-03-10
  • 打赏
  • 举报
回复
引用 1 楼 sunnxxy 的回复:

update table inner join g_table on table.name=g_table.name set table.g_id=g_table
.g_id;
我写到这里 有什么改善速度和效率的方法么?
语句没有问题。加上索引以提高效率。另外最好是分批做 加上WHERE子句,一次UPDATEW一部分。
rucypli 2014-03-10
  • 打赏
  • 举报
回复
建议分段做批量跟新 加个条件where id between xxx and xxx;
benluobo 2014-03-10
  • 打赏
  • 举报
回复
写的更新语句是对的,根据你的更新语句里面on table.name=g_table.name 在两个表的name上建立索引
WWWWA 2014-03-10
  • 打赏
  • 举报
回复
update table inner join g_table on table.name=g_table.name set table.g_id=g_table.g_id; OR update table , g_table set table.g_id=g_table.g_id WHERE table.name=g_table.name 在两表的NAME字段上建立索引
梅子 2014-03-10
  • 打赏
  • 举报
回复

update table inner join g_table on table.name=g_table.name set table.g_id=g_table
.g_id;
我写到这里 有什么改善速度和效率的方法么?

56,875

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧