sql update 怎样更新只定条数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql update 怎样更新只定条数相关的知识,希望对你有一定的参考价值。

示范代码一(更改指定条件为列2为张三的数据):

Update 表名 Set [列1]='22444',[列3]='asdasd' where [列2]='张三';

示范代码二(更改前1000条数据,设置列2的值是张三)

Update 表名 Set [列2]='张三' where (Select Top 1000 [列2] from 表名);

参考技术A update 表名 set  name='xxxx' where 字段 in ('xxx','xxx','xxx');
#或者
update 表名 set  name='xxxx' where id <100;

参考技术B update tablename set fieldname = ''
where 这里写入条件就可以了。
比如:where id in (1,2,3,4) 只更新ID为1,2,3,4的记录。追问

大哥,我只想更新符合条件的其中任意一条,这个怎么弄

追答

update tablename set fieldname = ''
where id in (select top 1 id from tablename where 条件写在这)

本回答被提问者采纳
参考技术C update 本身不能限定更新的条数,可以变通实现,使用公用表达式:
SQL Server 2005 以上版本数据库支持。更新前十条数据
;with tb ( select top 10 * from table order by col )
update tb set a='xxx'追问

大哥,我只想更新符合条件的其中任意一条,这个怎么弄

追答

;with tb ( select top 1 * from table where **** order by newid())
update tb set a='xxx'
随机排序取一条更新即可。

参考技术D oracle可以这样
update table set field=? where 条件 and rownum=1;

update 更新多个表 SQL

SQL中,有2个表A1、A2,A1表中有字段D1(主键,与表A2中主键E1关联)、D2,A2中有字段E1、E2,请问怎么用 一个UPDATE同时将A1、A2表中的D2、E2字段同时更新成1(默认值是0),请认真看完题再回答,谢谢

参考技术A update 好像是不能同时更新两个表的

楼主想同时更新这两个表而采用单个更新是因为2个表的约束关系
其实还有一个办法
就是先把两个表的约束关系都停用了
然后用2条语句将2个表分别更新,更新完了以后再启用两个表的约束关系就可以了
参考技术B update 语句无法 同时 更新两个表;

可以 对2个表update 后

再统一提交追问

就是最后Commit? 没有同时更新么? 那组合情况怎么办? 我更新第一个表,但是更新第二个表需要第一个表修改字段以前的值组合查出来才能决定更新哪条记录的,我看网上有很多update同时更新多条记录,但都是用别的表更新一个表,并不是真正的同时更新多个表

追答

没有同时更新多个表的语法。

可以用触发器,在update一个表的时候,同时 update另一个表。

本回答被提问者采纳
参考技术C update A1 a,A2 b set a.D2=1,b.E2=1 where .....
update 和select 都可以同时操作多个表,为了方便可以在表后面加比如 a ,相当于变量一样。
mysql,sqlserver,oracle有效,其他数据库没试过追问

你确定实验过?我实验怎么报错,而且help中说明了update后不能跟2个表的,什么情况?

追答

你的什么数据库?

追问

SQL2008

追答

真不好意思sqlserver还真不行,update 多表只在mysql上试过,可以。sqlserver支持select多表,我还以为update也支持。

追问

哦~没关系,谢谢你了

参考技术D 一个UPDATE不可能做到更新两个表

可以将一个表的内容先提取到临时表,先更新此表,再用临时表内容作条件更新另一个表
第5个回答  2013-07-23 用级联更新。

以上是关于sql update 怎样更新只定条数的主要内容,如果未能解决你的问题,请参考以下文章

关于SQL UPDATE关联更新

oracle 怎样使UPDATE 更新序列??

关于SQL UPDATE关联更新

PHP怎样批量更新数据表中某字段的值?

SQL server 2008中 怎样用update 修改指定行号列号的数据?

sqlserver update语句怎样更改两个数据?