在网上看到的,记录下,实现多行多列更新
创新互联公司凭借专业的设计团队扎实的技术支持、优质高效的服务意识和丰厚的资源优势,提供专业的网站策划、成都做网站、网站设计、网站优化、软件开发、网站改版等服务,在成都10年的网站建设设计经验,为成都上千多家中小型企业策划设计了网站。
update table1 r
set (r.city,r.COUNTY,r.CELL_NAME,r.CELL_UK)
=
( select
m.company_name,m.COUNTY_NAME,m.cell_name,m.cell_uk
FROM table2 m where m.flow_id = r.flow_id
)
where exists (select 1 from table2 m where m.flow_id = r.flow_id )
创建联合主键如下:
ALTER TABLE ADD CONSTRAINTS '约束名' PRIMARY KEY (COLUMN,COLUMN,...);
跟Sql
Server类似。
可以使用编程,或者使用PL/SQL连接Oracle数据库,
登陆连接后,使用以下Sql:
update
table
set
id='TT'
where
a='XX';
以上语句,就是将表table中列a='XX'的所有id列改为“TT”。
条件可以添加多个,更新的字段也可以添加多个,比如:
update
table
set
id1='TT',id2='CC'
where
a='XX'
and
b='YY'
;
oracle中update多列用逗号分隔。
如test表中有如下数据:
要修改id为3的这条数据将id改成6,name改成赵六,用如下语句:
update test set id=6,name='赵六' where id=3;
commit;
更改后的结果:
什么叫批量更新一列记录? 是要一次性更新多条记录么,如果是这样的话只能逐条去些UPDATE语句。不过可以把需要更新的所有数据全部存到excel表格里,然后用CONCATENATE函数去写SQL语句
update主要由where条件决定更新对象,不写where条件会更新全表。
如
update table set column1 = 'a' where column1 = '1';
这条语句就是把所有column1列值为'1'的行的column1列都更新成'a'
假设表a中有多个字段(province ,city)需要从b表获取(两张表的mobile一样),总结了几种写法。
一、update a set a.province=(select province from b where b.mobile=a.mobile);
update a set a.city=(select cityfrom b where b.mobile=a.mobile);
这种写法效率太低,尤其是号码有上万条的时候,所以抛弃。
二、update a set a.province=b.province,a.city=b.city from a inner join b on a.mobile=b.mobile.
或者update a set a.province=b.province,a.city=b.city from a,b where a.mobile=b.mobile.
三、update a inner join b on a.mobile=b.mobile set a.province=b.province,a.city=b.city
注意:第二种和第三种写法在Oracle行不通的,老是报错,折腾了好长时间,最后还是用下面的语句解决了问题
四、update a set(a.province,a.city)=(select province,city from b where b.mobile=a.mobile)
其实第四种方法是第一种方法的合并。