sql update小结

以前update用的不少,但都是简单的单表操作,没有在意,最近查阅多表关联更新及更新top n,发现update还真灵活,记录如下(在mssqlserver2008r2下测试通过):

1单表操作 

update table1 set col1=val[,col2=val2...]

[where 条件表达式]

2多表关联操作

1)update 表名 set 列名 from 表1,表2 where 条件,此法源表(table1)不能用as别名,长表名很麻烦,如下:

update table1 set col1=table2.col1

from table2  where table1.pkey=table2.pkey

2)使用别名表更新,简洁!

update t1 set col1=t2.col1

from table1 t1,table2 t2  where t1.pkey=t2.pkey

3)更新来自查询表

update t1 set col1=val

from (select * from table1 [where 条件表达式] )t1

应用:更新前n条

update t1 set col1=val

from (select top 10 * from table1 [where 条件表达式] order by 列n )t1

另外,查询可以是本库中的表,也可以是外库表,如dblink连接的表或openrowset等

4)使用cte

;with t as(select * from table1  [where 条件表达式])

update t set  col1=val

sql update小结,布布扣,bubuko.com

时间: 2024-12-12 14:16:34

sql update小结的相关文章

xss、SQL测试用例小结

xss测试用例小结: <script>alert("跨站")</script> (最常用)<img scr=javascript:alert("跨站")></img><img scr="javascript: alert(/跨站/)></img><img scr="javas????cript:alert(/跨站/)" width=150></im

如何判断一条sql(update,delete)语句是否执行成功

如何判断一条sql(update,delete)语句是否执行成功 catch  (SQLException    e)  {  }  catch不到错误应该就成功了.   ===================================================================== Statement对象提供了三种执行sql语句的方法.  1.ResultSet  executeQuery(String  sql)       执行查询语句,如ResultSet  r

atitit..sql update语法的词法分析,与语法ast构建

atitit..sql update语法的词法分析,与语法ast构建 1. 要使用sql udpate语法的dsl ,需要写个解释器.. 1 2. 词法分析的实现 1 2.1. 扫描器的实现 SqlUpExpTokener 1 2.2. 等号操作符的转态 EqxState 2 2.3. 单引号的转态 SingleQuoeState 3 2.4. 逗号操作的转态 CommaState 5 3. 构建语法树ast 6 4. 最终输出ast结构 8 1. 要使用sql udpate语法的dsl ,需要

SQL join小结

原来join=inner join,left/right/full join=left/right/full outer join. join/inner join仅返回匹配的 left outer join返回左边每一项,右边不匹配的就null,right反之 full outer join返回左右的,顺序由上到下先是匹配的,不匹配的在后面,表达式写在前的(A full outer join B中的A)也在前,不匹配的为null union必须有相同数量的列,并且列的数据类型要相似.默认取不同

SQL Update 巧用

JOIN 样本 ********************************** Update 结存 set 结存.现有库存=c.入仓数-b.出仓数量 from 结存 a join (select 物料代码,sum(isnull(入仓数,0)) 入仓数 from 进仓 group by 物料代码) c on a.代码=c.物料代码 left join (select 代码,sum(isnull(出仓数量,0)) 出仓数量 from 领料 group by 代码) b on a.代码=b.代码

一个SQL update语句

需要每隔一段时间选取最老的商户更新时间戳: update DP_Shop set DP_Shop.LastDate = now() where DP_Shop.ShopId in (select ShopId from DP_Shop order by LastDate limit 5); ERROR 1235 (42000): This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery' 多加一层: u

sql update 触发器 可获得被update的行的信息

类型:转载 sql update 触发器 可获得被update的行的信息,需要的朋友可以参考下. 复制代码 代码如下: create trigger TgName on tb for update as if update(recommend) begin update tb set commenddate=(getdate()) from tb inner join inserted on tb.vlistid=Inserted.vlistid end recommend表示被更新的字段. 关

[7]SQL UPDATE

[7]SQL UPDATE UPDATE 语句用于更新表中的记录. 下面是选自 "Websites" 表的数据: +----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google |

SQL-W3School:SQL UPDATE 语句

ylbtech-SQL-W3School:SQL UPDATE 语句 1.返回顶部 1. Update 语句 Update 语句用于修改表中的数据. 语法: UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 Person: LastName FirstName Address City Gates Bill Xuanwumen 10 Beijing Wilson   Champs-Elysees   更新某一行中的一个列 我们为 lastname 是 "Wilson&