sql 根据一个表更新 另一个表的例子及可能遇到的问题

例子:

update a set a.name=b.name1 from a,b where a.id=b.id

例子延伸:更新的时候会把字符串 转为科学计数法  怎么办?

答:用 cast 转换一下 ,或者双cast

update LoaneeExpand  set LoaneeExpand.phone=cast(cast(tt.PHONE as decimal(18,0))  as  nvarchar(50))  from LoaneeExpand ,tt  where  LoaneeExpand .id=tt.id

例子再次深入延伸问题:更新时

String or binary data would be truncated.
The statement has been terminated.

字符串或二进制数据将被截断。
该语句已终止。  怎么办 ?

很明显 就是你要更新的表的 字段长度不够 , 可是查询表 b的 所有真实 长度 len(b.name) <20 .. 都符合 表a 的字段长度啊,这是为什么?

答 :更新表a时 ,并是不按照 表b的真实长度 计算的,而是按照表b字段的定义长度 ,所有把表a需要修改的字段长度,按照表b的字段长度 设定就好了。

时间: 2024-12-19 01:26:39

sql 根据一个表更新 另一个表的例子及可能遇到的问题的相关文章

.NET一个线程更新另一个线程的UI(两种实现方法及若干简化)

Winform中的控件是绑定到特定的线程的(一般是主线程),这意味着从另一个线程更新主线程的控件不能直接调用该控件的成员. 控件绑定到特定的线程这个概念如下: 为了从另一个线程更新主线程的Windows Form控件,可用的方法有: 首先用一个简单的程序来示例,这个程序的功能是:在Winfrom窗体上,通过多线程用label显示时间.给出下面的两种实现方式 1.结合使用特定控件的如下成员 InvokeRequired属性:返回一个bool值,指示调用者在不同的线程上调用控件时是否必须使用Invo

十一.单表更新及多表更新

1.新创建一个商品分类表 2.查看商品表的分类 3.将商品表分类添加到新建的商品分类表中 原文地址:https://www.cnblogs.com/chenshaoping/p/8744348.html

sql语句问题 通过联立两个表更新其中一个表的字段

============问题描述============ 有两个表a和b,a表中的字段有mobilehead(号码前7位),provincename,b表中有mobile(正常号码),provincename,需求是通过联立两个表,更新b表中provincename为空的数据. ============解决方案1============ 可以这样做 UPDATE    b SET            b.PN = a.PN FROM         a   WHERE     b.PN = '

一个数据表更新另外一个数据表(SQL)

MERGE INTO table_Online USING table_ExcelON table_Online.[key_o] = table_Excel.[key_e]WHEN MATCHEDTHEN UPDATE SET table_Online.[商户,门店名称,门店所属区域,门店地址,商户分类] =  table_Excel.[商户,门店名称,门店所属区域,门店地址,商户分类] --更新WHEN NOT MATCHED THEN INSERT VALUES (table_Excel.[

MySQL多表更新的一个坑

简述 MySQL支持update t1,t2 set t1.a=2;这种语法,别的关系数据库例如oracle和sql server都不支持.这种语法有时候写起来挺方便,但他有一个坑. 测试脚本 drop database fander; create database fander; use fander; create table t1(a int); create table t2(a int); insert into t1 value(1); select * from t1; upda

mysql用一个表更新另一个表

Solution 1:  1列 update student s, city c    set s.city_name = c.name  where s.city_code = c.code; Solution 2:  多个列 update  a,  b set a.title=b.title, a.name=b.namewhere a.id=b.id Solution 3: 子查询 update student s set city_name = (select name from city

ACCESS中通过一个字段更新另一个字段

搞了好久的一个问题终于有结果…… 根据学生进出馆的次数和学生报名人数来分配自习间 学生报名是通过工号(学号)来报名的: 而门禁系统统计出来的数据有绝一大部分仅有 卡号没有 工号和姓名, 即便统计出来也不准啊: 各种问,各种找, 问财务,说给的卡号没有问题, 问门禁管理人员,说搞好了给我电话, 搞好几天也没有给我打电话, 据说是简单的看了下没有搞明白,当时一同事在那看见了 就这光导出日志就花了NN久.(门禁是office 2003)每次只能导60000条数据,还要等10导一次, 中间再死几次机,我

SQL快速操作技巧2_datatable批量更新到数据表

(为了给您节省时间,您可以只看高亮部分内容) 要将datatable 批量更新到数据表其实是两步: (1)将datatable快速存入一个表中: (2)根据一个数据表更新另外一个数据表: 下面细说: (1)将datatable快速存入一个表中: 1)   insert循环插入:2)   sqldataadapter.update(dataset,tablename);3)   sqlbulkcopy.WriteToServer(datatable); 1.生成测试的datatable表,表结构如

SQL两表之间:根据一个表的字段更新另一个表的字段

1. 写法轻松,更新效率高: update table1 set field1=table2.field1, field2=table2.field2 from table2 where table1.id=table2.id 2. 常规方式,种写法相当于一个 Left join, 以外面的where为更新条数,如果不加where就是所有记录 update table1 set field1=(select top 1 field1 from table2 where table2.id=tab