求一sql语句,设置表a.col字段的值,等于 表b.col2 的值,但是是随机的,没有 类似a.id=b.id

daodaoyu222 2013-12-17 11:39:55
求一sql语句,设置表a.col字段的值,等于 表b.col2 的值,但是是随机的,没有 类似a.id=b.id

如有表a

id col1
1 11
2 33
3 58

表b

id col2
1 3458
2 1429
3 5459
4 4060
5 4598
6 8492


我想要达到的效果

表a col1 的的值,随机取 表b col2的值

如得到以下类似

表a

id col1
1 4060
2 3458
3 4598

a.id 和b.id 也许不是连续的

不知道能不能实现,求教
...全文
82 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2013-12-17
  • 打赏
  • 举报
回复
update a set col1=(select col2 from b where id>=rand()*10000 order by id limit 1)
rucypli 2013-12-17
  • 打赏
  • 举报
回复
可以一条条更新 update a set col1=(select col2 from b order by rand() limit 1) where id=1; update a set col1=(select col2 from b order by rand() limit 1) where id=2; update a set col1=(select col2 from b order by rand() limit 1) where id=3;
WWWWA 2013-12-17
  • 打赏
  • 举报
回复
修改: UPDATE A B INNER JOIN (SELECT *,FLOOR(1 + RAND()*(SELECT MAX(ID) FROM b)) AS PX FROM A) C ON B.ID=C.id INNER JOIN b D ON C.PX=D.ID SET B.col1=D.col2; 表b中的ID越大,重复的可能性越小
WWWWA 2013-12-17
  • 打赏
  • 举报
回复
UPDATE A B INNER JOIN (SELECT *,FLOOR(1 + RAND()*(SELECT MAX(ID) FROM B)-1) AS PX FROM A) C ON B.ID=C.PX INNER JOIN B D ON C.PX=D.ID SET B.PS=D.`PS`; 表b中的ID越大,重复的可能性越小

56,681

社区成员

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

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