数据库(update tab1 set tab1.name=tab1.name+(select t2.name from tab2 t2 where t2.id=tab1.id))

时间:2023-03-10 06:46:58
数据库(update tab1 set tab1.name=tab1.name+(select t2.name from tab2 t2 where t2.id=tab1.id))

有t1 和 t2 两个表,表中的数据和字段如下:

数据库(update tab1 set tab1.name=tab1.name+(select t2.name from tab2 t2 where t2.id=tab1.id))

执行 如下SQL语句:

update tab1 set tab1.name=tab1.name+(select t2.name from tab2 t2 where t2.id=tab1.id)

执行完毕后,t1 结果如下:

数据库(update tab1 set tab1.name=tab1.name+(select t2.name from tab2 t2 where t2.id=tab1.id))

1、 为什么?

答:1、update tab1 时,是全表更新,因为没有添加where过滤条件

2、update tab1时,id=3 的数据,计算的结果为NULL

所以name=NULL

2、如果不想改变 id=3 的数据 ,SQL该怎么写?

答:

update tab1 set tab1.name=tab1.name+(select t2.name from tab2 t2 where t2.id=tab1.id)

where tab1.id in(select id from tab2)

===========================================================================

测试语句:

 create table tab1
(
id int,
name varchar(200)
);
create table tab2
(
id int,
name varchar(200)
);
insert into tab1 values(1,'name1_')
insert into tab1 values(2,'name2_')
insert into tab1 values(3,'name3_') insert into tab2 values(1,'name1_')
insert into tab2 values(2,'name2_')
insert into tab2 values(4,'name4_') select * from tab1;
select * from tab2; delete from tab1;
delete from tab2; update tab1 set tab1.name=tab1.name+(select t2.name from tab2 t2 where t2.id=tab1.id) update tab1 set tab1.name=tab1.name+(select t2.name from tab2 t2 where t2.id=tab1.id)
where tab1.id in(select id from tab2)

测试SQL