表A
name syncid
曲柳川 UUID:6cf1f800-6c86-11e1-9a08-001f290c49e7
曲柳川 UUID:6cf1f800-6c86-11e1-9a08-001f290c49e7
热电厂 UUID:6d0cabf0-6c86-11e1-9a08-001f290c49e7
热电厂 UUID:6d0cabf0-6c86-11e1-9a08-001f290c49e7
热电厂 UUID:6d0cabf0-6c86-11e1-9a08-001f290c49e7
泡鹿沟 UUID:6cec79c0-6c86-11e1-9a08-001f290c49e7
泡沿 UUID:6ce88220-6c86-11e1-9a08-001f290c49e7
泡沿 UUID:6ce88220-6c86-11e1-9a08-001f290c49e7
泡沿 UUID:6ce88220-6c86-11e1-9a08-001f290c49e7
泡沿 UUID:6ce88220-6c86-11e1-9a08-001f290c49e7
泡沿 UUID:6ce88220-6c86-11e1-9a08-001f290c49e7
泡沿1 UUID:6ceacc10-6c86-11e1-9a08-001f290c49e7
泡沿1 UUID:6ceacc10-6c86-11e1-9a08-001f290c49e7
人民大药房(彩北店) UUID:6cb53d20-6c86-11e1-9a08-001f290c49e7
人民大药堂 UUID:6d16be10-6c86-11e1-9a08-001f290c49e7
批发市场工商所 UUID:6cbf7650-6c86-11e1-9a08-001f290c49e7
表B
name syncid
曲柳川 1
热电厂 2
泡鹿沟 3
泡沿 4
泡沿1 5
人民大药房(彩北店) 6
批发市场工商所 7
把表B的syncid 更新成表A的syncid
11 个解决方案
#1
UPDATE use_wx SET
uxz=B.dm
FROM xzlx AS B
WHERE use_wx.uxz=B.xz
我看server数据库他们都是这么写的,但oracle 咋写啊!
uxz=B.dm
FROM xzlx AS B
WHERE use_wx.uxz=B.xz
我看server数据库他们都是这么写的,但oracle 咋写啊!
#2
为了防止A表同一个name有多个syncid,加了一个rownum=1的条件。
update 表B set syncid=(select distinct syncid from 表A where name=表B.name and rownum=1);
update 表B set syncid=(select distinct syncid from 表A where name=表B.name and rownum=1);
#3
一个name就一个唯一的syncid
#4
如果不用rownum=1提示single-row subquery returns more than one row
用rownum=1的话,表B的数据都被刷新成,同一个syncid了。就是rownum=1的时候查询出来的那个ID值
用rownum=1的话,表B的数据都被刷新成,同一个syncid了。就是rownum=1的时候查询出来的那个ID值
#5
update 表B set syncid=(select distinct syncid from 表A where name=表B.name)
where exits (select 1 from 表A where name=表B.name)
where exits (select 1 from 表A where name=表B.name)
#6
Agree with 5#!
#7
up,后面要加上update条件
#8
有那么复杂吗,用一个子查询,直接下面的语句不就好了:update B set syncid=(select distinct(syncid) from A where A.name=B.name);
#9
MERGE INTO B
USING A
ON (A.NAME=B.NAME)
WHEN MATCHED THEN
UPDATE SET
B.syncid =A.syncid
可以常使用用merge,可以提高性能,不需要用exist
#10
可以 尝试用用merge,可以提高性能,不需要用exist
#11
此方法是可行.
但就是不知是什么原理,求5楼解答下。
#1
UPDATE use_wx SET
uxz=B.dm
FROM xzlx AS B
WHERE use_wx.uxz=B.xz
我看server数据库他们都是这么写的,但oracle 咋写啊!
uxz=B.dm
FROM xzlx AS B
WHERE use_wx.uxz=B.xz
我看server数据库他们都是这么写的,但oracle 咋写啊!
#2
为了防止A表同一个name有多个syncid,加了一个rownum=1的条件。
update 表B set syncid=(select distinct syncid from 表A where name=表B.name and rownum=1);
update 表B set syncid=(select distinct syncid from 表A where name=表B.name and rownum=1);
#3
一个name就一个唯一的syncid
#4
如果不用rownum=1提示single-row subquery returns more than one row
用rownum=1的话,表B的数据都被刷新成,同一个syncid了。就是rownum=1的时候查询出来的那个ID值
用rownum=1的话,表B的数据都被刷新成,同一个syncid了。就是rownum=1的时候查询出来的那个ID值
#5
update 表B set syncid=(select distinct syncid from 表A where name=表B.name)
where exits (select 1 from 表A where name=表B.name)
where exits (select 1 from 表A where name=表B.name)
#6
Agree with 5#!
#7
up,后面要加上update条件
#8
有那么复杂吗,用一个子查询,直接下面的语句不就好了:update B set syncid=(select distinct(syncid) from A where A.name=B.name);
#9
MERGE INTO B
USING A
ON (A.NAME=B.NAME)
WHEN MATCHED THEN
UPDATE SET
B.syncid =A.syncid
可以常使用用merge,可以提高性能,不需要用exist
#10
可以 尝试用用merge,可以提高性能,不需要用exist
#11
此方法是可行.
但就是不知是什么原理,求5楼解答下。