如何根据A表、B表中共同的字段,给B表新的字段中填入A表中的字段
作者:FancyPig | 发布时间: | 更新时间:
问题场景
我们想把securityspace表(B表)中的Risk字段添加到总表(A表)中

总表plugins(A表)这里一开始risk字段是没有值的(我们截图的是执行完代码有值的)

解决方法
我们发现securityspace(B表)和plugins(A表)中有共同的字段:securityspace(B表)中的ID字段和plugins(A表)中的oid字段,我们只需要下面一行代码就可以解决了
update plugins
set risk = (select Risk from securityspace where securityspace.ID=plugins.oid)

类似场景
下面再写一个场景方便大家理解吧,我连表也列出来,给大家讲解
A表
| user | gender | hobby |
| fancypig | 男 | 打菠菜 |
| pigpigpig | 男 | 写博客 |
B表
| name | password | |
| fancypig | fancypig@foxmail.com | MD5_1 |
| pigpigpig | fancypigsec@gmail.com | MD5_2 |
A表是用户的一个兴趣表,B表是用户的一个账户信息
我们想把用户的资料都合并到B表,这时我们需要新建2个字段(字段可以一样,但是怕很多人看不懂后面的SQL代码,我这里故意写的字段与A表中的不同)
B表
| name | password | sex | fancyjob | |
| fancypig | fancypig@foxmail.com | MD5_1 | ||
| pigpigpig | fancypigsec@gmail.com | MD5_2 |
然后运行SQL语句,因为我们这里用户名是一致的,因此根据用户名来填充对于的字段就好了
update B表
set sex = (select gender from A表 where A表.user=B表.name),
fancyjob = (select hobby from A表 where A表.user=B表.fancyjob)
然后数据就自动同步过来了,上面用户只显示了2个
通常情况下,数据量都不会很少,不然你也不会想着用SQL语句覆盖!