MSSQL使用update join更新记录示例

数据准备

 代码如下 复制代码

create table tab1(name nvarchar(20),gold int)
create table tab2(name nvarchar(20),gold int)
--data
insert into tab1 values('user1',10)
insert into tab1 values('user2',10)
insert into tab2 values('user1',20)

2.update join更新记录

 代码如下 复制代码

update tab1 set gold=t1.gold+t2.gold from tab1 t1 inner join tab2 t2 on t1.name=t2.name

说明:两张表的数据一定要是一对一关系,否则更新结果可能不明确。

网上整理的两个句话

1.加回原消费金额

 代码如下 复制代码
UPDATE e SET e.money = e.money + d.amount
       FROM employee e
       INNER JOIN (SELECT empid,amount=sum(amount) FROM deleted  WHERE rechargeable=1  GROUP BY empid) d  ON d.empid=e.id

      
2.扣除新消费金额

 代码如下 复制代码

UPDATE e SET e.money = e.money - i.amount
       FROM employee e
       INNER JOIN (SELECT empid,amount=sum(amount) FROM inserted WHERE rechargeable=1 GROUP BY empid) i ON i.empid=e.id

时间: 2024-11-17 23:07:55

MSSQL使用update join更新记录示例的相关文章

mysql 一次更新(update)多条记录的思路_Mysql

工作中遇到一个问题:要更新一个数据表. 这个表是我自己创建的,有7个字段,id.name.package等等 创建的时候,因为我把name.package的信息分别存在两个文本文件中, 所以我就用Insert方法,一次性将所有的name插入数据库中. name全部导入数据库中了,但是我的package没有导入,这时我仍然想用insert的方法插入,但是不行. 这时候应该利用update的方法.一次更新多条信息的思路如下: UPDATE table_name SET field_name = CA

mssql sql高效关联子查询的update 批量更新

/* 使用带关联子查询的Update更新    --1.创建测试表     create TABLE Table1    (    a varchar(10),    b varchar(10),    c varchar(10),    CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED    (    a ASC    )    ) ON [PRIMARY]    create TABLE Table2    (    a varchar(10),   

mysql 有就插入没有就更新 on DUPLICATE key update批量更新

on DUPLICATE key update批量更新 mysql有个批量更新的方法,mssql则无此命令用法,mysql的这个方法可以用来批量更新,更为强大的是:如果参数已存在则更新,如果数据库里没有这个参数就插入新的. 举例 insert into xinhuazidian (a, b, c) VALUES ('aaa','bbb','lao8.org'),  ('aaa2','bbb2','m.lao8.org') on DUPLICATE key update b=VALUES(b),

执行一条sql语句update多条记录实现思路_MsSql

通常情况下,我们会使用以下SQL语句来更新字段值: 复制代码 代码如下: UPDATE mytable SET myfield='value' WHERE other_field='other_value'; 但是,如果你想更新多行数据,并且每行记录的各字段值都是各不一样,你会怎么办呢?举个例子,我的博客有三个分类目录(免费资源.教程指南.橱窗展示),这些分类目录的信息存储在数据库表categories中,并且设置了显示顺序字段 display_order,每个分类占一行记录.如果我想重新编排这

菜鸟学ADO实例教程之ADO 更新记录

ado|教程 本站原创内容,转载请注明出处网页教学网. 我们可以使用SQL UPDATE 命令来更新数据库中的记录. 我们想更新数据库webjx中的一个表Customers中的一个记录,首先我们把表Customers中的所有记录显 示出来. <html> <body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0

SQL循序渐进(7)更新记录

更新记录 Update语句用于更新或者改变匹配指定条件的记录,它是通过构造一个where语句来实现的.其语句格式如下: update "tablename" set "columnname" = "newvalue"[,"nextcolumn" = "newvalue2"...] where "columnname" OPERATOR "value" [and|or

如何查看电脑自动更新记录?

  电脑类技术经验均为本人从生活中得来的经验,分享出来希望对大家有所帮助,今天小编为大家讲解下,如何查看电脑自动更新记录希望对大家有所帮助. 1.点击电脑左下方的开始菜单,找到控制面板打开,进入控制面板 2.进入控制面板界面之后,找到系统和安全选项,点击进入. 3.进入系统与安全界面之后,我们点击最上方的操作中心.进入操作中心. 4.进入操作中心,我们可以看到左下角有一个Windows Update选项,我们点击进入. 5.进入系统更新界面之后,我们可以在左上方菜单栏里看到一个查看更新记录选项,

mysql 开发技巧之JOIN 更新和数据查重/去重_Mysql

主要涉及:JOIN .JOIN 更新.GROUP BY HAVING 数据查重/去重 1 INNER JOIN.LEFT JOIN.RIGHT JOIN.FULL JOIN(MySQL 不支持).CROSS JOIN 这是在网上找到的非常好的一篇博文,图解 join 语句: CODING HORROR-A Visual Explanation of SQL Joins 下图可以很清楚的明白,join 的数据选取范围 [][1] [1]: yun_qi_img/160725-imooc-mysql

sql 根据条件更新记录 case then

sql 根据条件更新记录 case then第一个利用存储过程来做 declare @str varchar(500) set @str=@str+'update 表名' if state=1   set @str=@str+' set state=0' else    set @str=@str+' set state=1' set @str=@str+' where moduleroleid='1' exec(@str) // update 表名 set state=0 where modu