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

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

 执行 如下SQL语句:

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

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

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)

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

测试语句:

 1 create table tab1
 2 ( 
 3    id int,
 4    name varchar(200)
 5 );
 6 create table tab2
 7 ( 
 8    id int,
 9    name varchar(200)
10 );
11 insert into tab1 values(1,'name1_')
12 insert into tab1 values(2,'name2_')
13 insert into tab1 values(3,'name3_')
14 
15 insert into tab2 values(1,'name1_')
16 insert into tab2 values(2,'name2_')
17 insert into tab2 values(4,'name4_')
18 
19 
20 select * from tab1;
21 select * from tab2;
22 
23 delete from tab1;
24 delete from tab2;
25 
26 update tab1 set tab1.name=tab1.name+(select t2.name from tab2 t2 where t2.id=tab1.id)
27 
28 update tab1 set tab1.name=tab1.name+(select t2.name from tab2 t2 where t2.id=tab1.id) 
29 where tab1.id in(select id from tab2)
测试SQL
原文地址:https://www.cnblogs.com/qiupiaohujie/p/11960103.html