表table1字段
id name value
1 a aaaa
2 b bbbb
3 c cccc
4 d dddd
name字段是唯一的
====================
表table2字段
id name clientname
11 a 客户1
11 a 客户2
12 b 客户3
13 c 客户4
11 a 客户5
11 a 客户6
要求用一条SQL语句更新表table1中id的值更新后table1中的记录如下
id name value
11 a aaaa
22 b bbbb
33 c cccc
4 d dddd
id name value
1 a aaaa
2 b bbbb
3 c cccc
4 d dddd
name字段是唯一的
====================
表table2字段
id name clientname
11 a 客户1
11 a 客户2
12 b 客户3
13 c 客户4
11 a 客户5
11 a 客户6
要求用一条SQL语句更新表table1中id的值更新后table1中的记录如下
id name value
11 a aaaa
22 b bbbb
33 c cccc
4 d dddd
set id = b.id
from table1 a
left join (select distinct id,name from table2) b on a.name = b.name
id name clientname
11 a 客户1
11 a 客户2
12 b 客户3
13 c 客户4
12 a 客户5
11 a 客户6
update之后会是怎样的呢?
id name clientname
11 a 客户1
11 a 客户2
12 b 客户3
13 c 客户4
12 a 客户5
11 a 客户6
update之后会是怎样的呢?--------------------------数据库会顺序执行update语句,
如果数据的物理排序就是这个顺序的话,那么update之后应该是12
set id = case when isnull(b.id,'') = '' then id else b.id end
from table1 a
left join (select distinct id,name from table2) b on a.name = b.name
如果table1中name字段值在table2中name找不着,则table1中id 是null
set id = case when b.id is null then id else b.id end
from table1 a
left join (select distinct id,name from table2) b on a.name = b.name