sql两个表数据更新

一、当用一个表中的数据来更新另一个表中的数据,T-SQL提供多种写法(下面列出了二种),但建议用第一种写法,虽然传统,但结构清晰。

并且要注意,当用一个表中的数据来更新另一个表中的数据时,二个表一定要有关联!

1.

update t1   
        set t1.c2 = t2.c2  
      from t2  
where t1.c1 = t2.c1

2.

Update t1   
        set t1.c2 = t2.c2  
from t1 inner join t2   
        on t1.c1 = t2.c1

二、FROM 子句中指定的表的别名不能作为 SET column_name 子句中被修改字段的限定符使用。
    例如,下面的内容无效:

UPDATE titles  
SET t.ytd_sales = t.ytd_sales + s.qty  
FROM titles t, sales s  
WHERE t.title_id = s.title_id  
AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)

若要使上例合法,请从列名中删除别名 t 或使用本身的表名。
1.

UPDATE titles  
SET ytd_sales = t.ytd_sales + s.qty  
FROM titles t, sales s  
WHERE t.title_id = s.title_id  
AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)

2.

UPDATE titles  
SET titles.ytd_sales = t.ytd_sales + s.qty  
FROM titles t, sales s  
WHERE t.title_id = s.title_id  
AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)

原文地址:https://www.cnblogs.com/chewen/p/11601676.html

时间: 2024-11-05 13:48:35

sql两个表数据更新的相关文章

sql两个表的组合查询以及yii下使用数据库查询

sql两个表的组合查询  使用 join on 例如:两个表查询: select u.username, t.title from user u join task t on u.id = t.id; 其中  user u 是用来把表名简化   join则是加入其他的表    on则是表示查询的条件   u.username 则是表示user表中的username字段 同样的道理  多表查询的原理也是一样的 这是sql语句: select * from user u join task t on

sql 两张表关联修改数据

Hr_DepartPlanWeek 部门周计划表:DepartMent部门名称,DepartMentID部门ID. g_group部门表:gname部门名称,gid部门id 根据DepartMentID管理g_group表修改DepartMent update Hr_DepartPlanWeek set DepartMent=t.gname from (select gname,gid from g_group left join Hr_DepartPlanWeek on g_group.GId

使用kettle实现两张表的数据更新

请大家指教,使用的Oracle数据库作为数据源,mysql数据库做同步 1.如图所示: 拖进,表输入,插入/更新,write to log, 2.下面进入配置页面,双击”表输入“ 或是右键”编辑步骤“ 如果所示: 配置你的主数据源,就是你要从他上边更新数据的,点击”新建“或是”编辑“进行数据库配置,如图所示, 你的数据库地址ip,数据库,端口号,用户名,密码,点击”Test“进行测试连接,然后关闭进行点击,”获取查询sql语句“,如图所示: 选择你的数据源表,然后点击”确定“ 3.进行插入/更新

MySQL 两张表关联更新(用一个表的数据更新另一个表的数据)

有两张表,info1, info2 . info1: info2: 现在,要用info2中的数据更新info1中对应的学生信息,sql语句如下: UPDATE info1 t1 JOIN info2 t2 ON t1.name = t2.name SET t1.age = t2.age, t1.class = t2.class; 运行结果如下: 更新过的info1: 至于效率问题,之前我有三张表,都在40万左右.需要将 table2 中的两个字段(step1),table3 中的一个字段(ste

NNER JOIN连接两个表、三个表、五个表的SQL语句

NNER JOIN连接两个表.三个表.五个表的SQL语句 2013-04-14 15:13:11来源:西部e网作者: SQL INNER JOIN关键字表示在表中存在至少一个匹配时,INNER JOIN 关键字返回行. SQL INNER JOIN关键字表示在表中存在至少一个匹配时,INNER JOIN 关键字返回行. 1.连接两个数据表的用法: FROM Member INNER JOIN MemberSort ON Member.MemberSort=MemberSort.MemberSor

sql实现从两个表获取字段组成表数据再插入到函数表中

实现此效果说起来比较难以说明,我这里还是先将实现的效果已图的形式展示一下吧. 这是两个表的设计.我想实现的效果举个例子,以查询secretaryCharge为例: 点击"市级",我将查询到市级一下所有"区级"的secretaryCharge数目,并通过organizations中的fullName来作为名字,查到的统计数目作为值.得到的效果便是如下图所示: 具体实现sql语句就是用到join on,sql语句具体如下: insert @result(fullName

SQL两表关联查询&批量修改字段值

SQL关联查询&修改字段,正确范例如下: --批量修改报告单位名称&更新时间 --tt和tp两表关联查询,将符合条件的tt表中的principal字段更新到tp表的ruperson字段 merge into nhis34.t_publicplaces tp using standard.t_organization tt on (tt.orgcode = tp.r_orgcode and tp.create_time > '2015-05-07 00:00:00') when mat

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

怎样将结构完全一样的两个表的内容合并到一个表中,SQL语句

标签: SQL合并数据 2013-08-21 10:41 489人阅读 评论(0) 收藏 举报  分类: Oracle数据库(14)  select * into 新表名 from (select * from T1 union all select * from T2) 这个语句可以实现将合并的数据追加到一个新表中. 不合并重复数据 select * from T1 union all select * from T2 合并重复数据 select * from T1 union select