oracle 两表更新问题.在线等

来源:百度知道 编辑:UC知道 时间:2024/06/07 21:48:04
update sys_region set s.lat_adjustcer =any(select g.lat_adjustcer from region g ),
s.lon_adjustcer=any(select g.lon_adjustcer from region g )
where substr(s.area_name,1,2) =any substr((select g.area_name from region g) ,1,2);

1. 首先说下语句有问题么?
2. 他提示的错误是 缺少表达式
3. 给出解决办法 .写出正解语句
update sys_region s set s.lat_adjustcer =any(select g.lat_adjustcer from region g ),
s.lon_adjustcer=any(select g.lon_adjustcer from region g )
where substr(s.area_name,1,2) =any substr((select g.area_name from region g) ,1,2);
整个的是这样的

where substr(s.area_name,1,2)
s.area_name从那里来的?后面要有个from 查询出结果吧?不然没有值的

1、你可以这样理解,因为【any】等价于【in】,所以你的:
【set s.lat_adjustcer =any(select g.lat_adjustcer from region g )】
就相当于语句
【set s.lat_adjustcer in(select g.lat_adjustcer from region g )】
这样的语句是不能通过的。

2、修改后(看你用any想必你是想取出子查询的任何一个值都可以,既然是任何一个那我就选择最小值了,如果不对你自己再调整)

update sys_region s
set s.lat_adjustcer = min(select g.lat_adjustcer from region g),
s.lon_adjustcer = min(select g.lon_adjustcer from region g )
where substr(s.area_name,1,2) =any substr((select g.area_name from region g),1,2);

---
以上,希望对你有所帮助。

update sys_region set lat_adjustcer=g.lat_adjustcer,
lon_adjustcer=g.lon_adjustcer from sys_region s,region g
where substring(s.area_name,1,2) =substring(g.area_name,1,2)