高分请各位高手帮帮忙,求一条更新SQL语句,谢谢了

来源:百度知道 编辑:UC知道 时间:2024/06/17 09:37:19
请各位高手帮帮忙,求一条SQL语句,谢谢了
求一条更新语句
有A,B 两张表,A表里有A1,A2 两个字段,B表里也有B1,B2两个字段(A1,B1都是名字,A2,B2都是数量)
当A表里的A2为空时,A2就更新为A1=B1的 B2的数量
A表 | B表
_______________________________________________________
A 1 A 2 | B 1 B 2
-------------------------------------------------------
张三 50 李四 30
小明 null 小明 20

A1 B1 是姓名 A2 B2 是分数
当A表上小明的分数为空时,就把A表上的分数更新为B表上的分数

update A set A2 = B2 where (A2 is null or A2 = '') and A1 = B1

A2就更新为A1=B1的 B2的数量?这句话什么意思

测试通过
update A set A2=(select B2 from B where B1=A1) where (A2 is null) or (A2='')

update A set A2 = B2 where (A2 is null or A2 = '') and A1 = B1

update A set A2=(select B2 from B where B1=A1) where A2 is null
你的这个问题怎么写都可能会出现潜在错误的。
中国人很多的,一个名字的人也很多。
假如同时有两个人或更多的叫小明,
小明 null 小明 20
小明 30 小明 40
小明 null 小明 30

看到这些你是不是就囧了。计算机也囧了,计算机扫描半天就纳闷了,我是更新哪条数据呀,你是不是在搞我啊。

注意一定要使用索引列进行编码。

Update A表 set A2 = (select B2 from B表 where A表.A1 = B表.B1) where A2 is null or A2 = ''

注意的是:select B2 from B表 where A表.A1 = B表.B1 这条语句只能查到一条记录,不然语句就有错。
你可以用TOP 1 、Max 、Min等等一些函数去控制一下