有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)

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

测试语句:

 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

数据库(update tab1 set tab1.name=tab1.name+(select t2.name from tab2 t2 where t2.id=tab1.id))的更多相关文章

  1. MySQL数据库update更新子查询

    比如: ? 1 2 3 4 UPDATE test.tb_vobile a set a.name = '111 ' WHERE a.id = (select max(id) id from test. ...

  2. 数据库 update select 多列操作

    最常用的update语法是:  UPDATE <table_name>  SET <column_name1> = <value>, SET <column_ ...

  3. 数据库update死锁

    比较常见的死锁场景,并发批量update时的一个场景: update cross_marketing set gmtModified = NOW(), pageview = pageview+ #ex ...

  4. 数据库update的异常一例

    调查一列bug,偶然发现了update的一个特性:update t set a=a+1 where id=4; 这样一条简单的语句,也会发生让人意外的事情: 如果 a 的初始值为null时,无论你up ...

  5. 如何提高数据库update更新的速度

    不用不知道,一用吓一跳..看下面这条SQL语句 String sql="update cats set name_alias='"+rs.getString(1)+"'w ...

  6. mysql数据库update时只更新部分数据方法

    需求:更新url中最一个字符的'-1'改为'-5',前面的内容保持不变 url列的内容如下:http://h5game.ecs.cedarmg.com/a/captal/dispther.do?dev ...

  7. mysql数据库从删库到跑路之select单表查询

    一 介绍 本节内容: 查询语法 关键字的执行优先级 简单查询 单条件查询:WHERE 分组查询:GROUP BY HAVING 查询排序:ORDER BY 限制查询的记录数:LIMIT 使用聚合函数查 ...

  8. mybatis用mysql数据库自增主键,插入一条记录返回新增记录的自增主键ID

    今天在敲代码的时候遇到一个问题,就是往数据库里插入一条记录后需要返回这个新增记录的ID(自增主键), 公司框架用的是mybatis的通用Mapper接口,里面的插入方法貌似是不能把新纪录的ID回填到对 ...

  9. 根据excel表格中的内容更新Sql数据库

    关于[无法创建链接服务器 "(null)" 的 OLE DB 访问接口 SQL Server 2008读取EXCEL数据时,可能会报这个错误:无法创建链接服务器 "(nu ...

随机推荐

  1. RPM常用命令总结

    安装 rpm -ivh package_name (package_name指的是RPM包的文件名) 查询 1.查询是否安装,及安装版本 rpm -q 已安装的软件名(ex:rpm -q docker ...

  2. githup常用备份

    https://github.com/ https://github.com/doumeki/ThrExcel https://github.com/xinxi1990/MyMonkey https: ...

  3. DWR服务器推送技术

    参考博客:https://blog.csdn.net/Marksinoberg/article/details/55505423 下载Dwr.jar文件 到官网http://directwebremo ...

  4. Vue中的导航守卫(路由守卫)

    当做Vue-cli项目的时候感觉在路由跳转前做一些验证,比如登录验证,是网站中的普遍需求. 对此,vue-router 提供的 beforeEach可以方便地实现全局导航守卫(navigation-g ...

  5. cf 【并查集】

    http://codeforces.com/contest/1245/problem/D 题意就是:你需要让所有城市都有电,你看也在该城市建电站使他有电,同时你可以链接他与其他城市,使之有电 解决: ...

  6. acwing 66. 两个链表的第一个公共结点

    地址 https://www.acwing.com/problem/content/description/62/ 输入两个链表,找出它们的第一个公共结点. 当不存在公共节点时,返回空节点. 样例 给 ...

  7. 第05组 Beta冲刺(1/4)

    第05组 Beta冲刺(1/4) 队名:天码行空 组长博客连接 作业博客连接 团队燃尽图(共享): GitHub当日代码/文档签入记录展示(共享): 组员情况: 组员1:卢欢(组长) 过去两天完成了哪 ...

  8. 【Java】String的首尾去空和判空

    去除字符串首尾空白字符:包括\t,\r,\n及" ": //去除字符串首尾空白字符:包括\t,\r,\n及" ": System.out.println(&qu ...

  9. 向技术领先的华为说No,就是对国家的通信前景说No!

    历史已经证明了,任何一项可以加速人员.物资.能源.金钱.信息迁移的技术,都会让社会原有的生产力成倍地增长.中国在互联网.移动互联网保持令整个世界震惊的飞速发展,以BAT为首的诸多商业帝国建立,还有人们 ...

  10. 使用Runtime的objc_msgSend实现模型和字典的互转

    一.介绍 模型转字典,字典转模型,这是开发中最基本的功能.系统类中提供了一个setValuesForKeysWithDictionary方法来实现字典转模型,至于模型转字典,这个就需要使用runtim ...