update还是导出? select a.nid,b.strname,a.lat,a.lon from a,b where a.lat=b.lat and a.lon=b.lon;
在sql_plus里执行: set echo off set feedback off set heading off set linesize 你想要的长度 set pagesize 一页的行数 spool c:\reslut.txt SELECT A.NID||','||B.STRNAME||','||A.LAT||','||A.LON FROM A,B WHERE (A.LAT = B.LAT) AND (A.LON = B.LON); spool offrelut.txt 文件就是你要的内容,是不是这个意思
是update 。上面那个 update table_a a set a.strname=(select b.strname from table_b b where a.lat=b.lat and a.lon=b.lon); 不好用啊。出错: 单行子查询反回多于一个行
update table_a a set a.strname=(select b.strname from table_b b where a.lat=b.lat and a.lon=b.lon) where a.lat=b.lat and a.lon=b.lon;try it.
update table_a a set a.strname=(select b.strname from table_b b where a.lat=b.lat and a.lon=b.lon); 和 update table_a a set a.strname=(select b.strname from table_b b where a.lat=b.lat and a.lon=b.lon) where a.lat=b.lat and a.lon=b.lon; 好像应该效果一样的吧
update table_a a set a.strname=(select b.strname from table_b b where a.lat=b.lat and a.lon=b.lon) where a.lat in (select b.lat from table_b b) and a.lon in (select b.lon from table_b b);it is true.
update a set strname = (select distinct b.strname from b where a.lat = b.lat and a.lon = b.lon) where a.nid in (select distinct b.nid from b where b.lat = a.lat and b.lon = a.lon);
update b set strname=(select max(strname) strname from a where a.lat=b.lat and a.lon=b.lon) where (b.lat,b.lon) in (select lat,lon from a);
你a表有主关键字,那么b表有没有和a表这个nid一一对应的字段啊 如果有 可以这样。 update table_a a set a.strname=(select b.strname from table_b b where a.nid=b.nid);
to: ATGC(这一生受了很多委屈吃了很多苦。。) ( ) 我的b表就是没有nid的。没有关连的。 请问怎么处理???
就是跟我上面说的一样的。表a字段 nid(自动id) strname lat lon 1 前门 33.1 33.2 表b字段 strname lat lon 游9(前门-蟒山):前门 33.1 33.2都是真实字段。 请帮帮忙。我已经用java写了一个更新程序,但程序速度很慢,1个小时只能更新1000条记录。数据库记录巨大。 还有没有办法?
现在我已经把B表的重复记录去掉了。已经不存在重复问题了。update table_a a set a.strname=(select b.strname from table_b b where a.lat=b.lat and a.lon=b.lon);我也可以执行那条语句了。但执行是执行,就是数据记录没有效果,还是老样子?怎么回事。执行以上记录时没有出错信息。
update aa a set a.strname=(select max(b.strname) from bb b where a.lat=b.lat and a.lon=b.lon group by b.lat.b.lon);
SQL> select * from aa;STRNAME LAT LON ---------------------------------------- ---------- ---------- 小钱门 33.1 33.2 大钱们 10.1 10.2SQL> select * from bb;STRNAME LAT LON ---------------------------------------- ---------- ---------- 游9(前门-蟒山):前门 33.1 33.2 游9(蟒山-前门):前门 33.1 33.2 大小钱么 10.1 10.2 小大钱么 10.1 10.2SQL> update aa a set a.strname=(select max(b.strname) from bb b where a.lat=b.lat and a.lon=b.lon gr oup by b.lat,b.lon);2 rows updated.SQL> select * from aa;STRNAME LAT LON ---------------------------------------- ---------- ---------- 游9(蟒山-前门):前门 33.1 33.2 小大钱么 10.1 10.2
update table_a a set a.strname=(select b.strname from table_b b where a.lat=b.lat and a.lon=b.lon);
select a.nid,b.strname,a.lat,a.lon
from a,b
where a.lat=b.lat and a.lon=b.lon;
set echo off
set feedback off
set heading off
set linesize 你想要的长度
set pagesize 一页的行数
spool c:\reslut.txt
SELECT A.NID||','||B.STRNAME||','||A.LAT||','||A.LON
FROM A,B
WHERE (A.LAT = B.LAT) AND (A.LON = B.LON);
spool offrelut.txt 文件就是你要的内容,是不是这个意思
update table_a a set a.strname=(select b.strname from table_b b where a.lat=b.lat and a.lon=b.lon);
不好用啊。出错: 单行子查询反回多于一个行
set a.strname=(select b.strname from table_b b where a.lat=b.lat and a.lon=b.lon)
where a.lat=b.lat and a.lon=b.lon;try it.
和
update table_a a
set a.strname=(select b.strname from table_b b where a.lat=b.lat and a.lon=b.lon)
where a.lat=b.lat and a.lon=b.lon;
好像应该效果一样的吧
set a.strname=(select b.strname from table_b b where a.lat=b.lat and a.lon=b.lon)
where a.lat in (select b.lat from table_b b) and a.lon in (select b.lon from table_b b);it is true.
set strname = (select distinct b.strname
from b
where a.lat = b.lat
and a.lon = b.lon)
where a.nid in (select distinct b.nid
from b
where b.lat = a.lat
and b.lon = a.lon);
where (b.lat,b.lon) in (select lat,lon from a);
如果有
可以这样。
update table_a a set a.strname=(select b.strname from table_b b where a.nid=b.nid);
我的b表就是没有nid的。没有关连的。 请问怎么处理???
1 前门 33.1 33.2
表b字段 strname lat lon
游9(前门-蟒山):前门 33.1 33.2都是真实字段。
请帮帮忙。我已经用java写了一个更新程序,但程序速度很慢,1个小时只能更新1000条记录。数据库记录巨大。
还有没有办法?
也就是说B表中有lat与lon重复的记录,但记录又不完全一样
A表示例:
nid(自动id) strname lat lon
1 前门 33.1 33.2
查找到B表重复记录如下:
strname lat lon
游9(前门-蟒山):前门 33.1 33.2
游9(蟒山-前门):前门 33.1 33.2
其实只要B表查出的任何一条记录,update进入a就行了。比面上面那两条重复记录,只要有一条更新入A表就行了。
用什么方法呢?熟悉mssql12000。 oracle现在刚学。请多多指教。
那就这样
update table_a a set a.strname=(select distinct b.strname from table_b b where a.lat=b.lat and a.lon=b.lon);
游9(前门-蟒山):前门 33.1 33.2
游8(蟒山-后门):后门 33.1 33.2
就不能用子查询方式更新
update table_a a set a.strname=(select distinct b.strname from table_b b where a.lat=b.lat and a.lon=b.lon);
试试
游9(前门-蟒山):前门 33.1 33.2
游9(蟒山-前门):前门 33.1 33.2 怎么实现??
---------------------------------------- ---------- ----------
小钱门 33.1 33.2
大钱们 10.1 10.2SQL> select * from bb;STRNAME LAT LON
---------------------------------------- ---------- ----------
游9(前门-蟒山):前门 33.1 33.2
游9(蟒山-前门):前门 33.1 33.2
大小钱么 10.1 10.2
小大钱么 10.1 10.2SQL> update aa a set a.strname=(select max(b.strname) from bb b where a.lat=b.lat and a.lon=b.lon gr
oup by b.lat,b.lon);2 rows updated.SQL> select * from aa;STRNAME LAT LON
---------------------------------------- ---------- ----------
游9(蟒山-前门):前门 33.1 33.2
小大钱么 10.1 10.2