21 个解决方案
#1
select a.xh,b.cj as cj1
from a,b
where a.xh=b.xh
这样么,什么需求?为什么这么做?
#2
如果B中不存在呢,2表关系如何,最好贴点数据出来,已经想得到的结果。。。
#3
原来A表中的cj1列的所有值为空,现需替换为B表的cj列的值,需根据xh关联,xh唯一。
#4
比如
A:
xh cj1
001
002
003
B:
xh cj
001 100
002 200
003 300
结果:
A:
xh cj1
001 100
002 200
003 300
A:
xh cj1
001
002
003
B:
xh cj
001 100
002 200
003 300
结果:
A:
xh cj1
001 100
002 200
003 300
#5
用B表的CJ字段更新A表的CJ1字段的值:
update a set a.cj1=(select b.cj from b where b.xh=a.xh)
update a set a.cj1=(select b.cj from b where b.xh=a.xh)
#6
谢谢,我来试试!
#7
能将所有值都更新吗?
#8
至少对于你4楼举的那个例子 5楼给出的update语句是可以满足要求的
不过如果在A和B表中存在不对应的数据(比如说在A有xh=004的记录 在B里没有xh=004的记录) 那就难说了 得看你的具体要求是怎样了
不过如果在A和B表中存在不对应的数据(比如说在A有xh=004的记录 在B里没有xh=004的记录) 那就难说了 得看你的具体要求是怎样了
#9
5楼的SQL需要改进一下
UPDATE a
SET cj1 = (SELECT cj FROM b WHERE a.xh = b.xh)
WHERE EXISTS (SELECT 1 FROM b WHERE a.xh = b.xh)
#10
merge into A
using B
on(A.xh=B.xh)
when matched then --有则更新
update set A.cj1=B.cj1;
when not matched then --无则插入
insert values(B.xh,B.cj1);
A(xh,cj1)表中的cj1替换为B(xh,cj)中的cj,通过xh
#11
UPDATE a
SET cj1 = (SELECT cj FROM b WHERE a.xh = b.xh)
WHERE EXISTS (SELECT 1 FROM b WHERE a.xh = b.xh)
SET cj1 = (SELECT cj FROM b WHERE a.xh = b.xh)
WHERE EXISTS (SELECT 1 FROM b WHERE a.xh = b.xh)
#12
9和11楼的对
UPDATE A
SET A.cj1 = (SELECT B.cj FROM B WHERE A.xh = B.xh)
WHERE EXISTS (SELECT 1 FROM B WHERE A.xh = B.xh)
UPDATE A
SET A.cj1 = (SELECT B.cj FROM B WHERE A.xh = B.xh)
WHERE EXISTS (SELECT 1 FROM B WHERE A.xh = B.xh)
#13
A表中数据B表肯定有,反之则不然。
#14
这样都能用,结贴了.....
#15
update a set cj1=(select cj from b where a.xh=b.xh)
#16
如果 在A,B表中xh都是主键的话可以使用如下语句
update (select a.xh,a.cj1,b.cj from A,B where A.xh=b.xh)
set cj1=cj
#17
学习了~~~
各种不同的方法
各种不同的方法
#18
支持此哥们,Merge into 判断是否合符你的要求,符合则更新,不符合还可以采取insert操作;
#19
merge into t_table t
using(select id,name,age,remark,t_id from t_table_1) t1
on(t.id=t1.id)
when matched then
update set t.name=t1.name,t.age=t1.age,t.remark=t1.remark,t.t_id=t1.t_id(需要更新字段)
when not matched then insert (t.id,t.name,t.age,t.remark,t.t_id)
values(t1.id,t1.name,t1.age,t1.remark,t1.t_id)
你可以按以上的格式自己测试一哈...
#20
UPDATE A SET cj1 = (SELECT cj FROM B WHERE A.xh = B.xh);
试试看,估计能解决!如果不能告诉我 下啊
试试看,估计能解决!如果不能告诉我 下啊
#21
20楼不能解决
#1
select a.xh,b.cj as cj1
from a,b
where a.xh=b.xh
这样么,什么需求?为什么这么做?
#2
如果B中不存在呢,2表关系如何,最好贴点数据出来,已经想得到的结果。。。
#3
原来A表中的cj1列的所有值为空,现需替换为B表的cj列的值,需根据xh关联,xh唯一。
#4
比如
A:
xh cj1
001
002
003
B:
xh cj
001 100
002 200
003 300
结果:
A:
xh cj1
001 100
002 200
003 300
A:
xh cj1
001
002
003
B:
xh cj
001 100
002 200
003 300
结果:
A:
xh cj1
001 100
002 200
003 300
#5
用B表的CJ字段更新A表的CJ1字段的值:
update a set a.cj1=(select b.cj from b where b.xh=a.xh)
update a set a.cj1=(select b.cj from b where b.xh=a.xh)
#6
谢谢,我来试试!
#7
能将所有值都更新吗?
#8
至少对于你4楼举的那个例子 5楼给出的update语句是可以满足要求的
不过如果在A和B表中存在不对应的数据(比如说在A有xh=004的记录 在B里没有xh=004的记录) 那就难说了 得看你的具体要求是怎样了
不过如果在A和B表中存在不对应的数据(比如说在A有xh=004的记录 在B里没有xh=004的记录) 那就难说了 得看你的具体要求是怎样了
#9
5楼的SQL需要改进一下
UPDATE a
SET cj1 = (SELECT cj FROM b WHERE a.xh = b.xh)
WHERE EXISTS (SELECT 1 FROM b WHERE a.xh = b.xh)
#10
merge into A
using B
on(A.xh=B.xh)
when matched then --有则更新
update set A.cj1=B.cj1;
when not matched then --无则插入
insert values(B.xh,B.cj1);
A(xh,cj1)表中的cj1替换为B(xh,cj)中的cj,通过xh
#11
UPDATE a
SET cj1 = (SELECT cj FROM b WHERE a.xh = b.xh)
WHERE EXISTS (SELECT 1 FROM b WHERE a.xh = b.xh)
SET cj1 = (SELECT cj FROM b WHERE a.xh = b.xh)
WHERE EXISTS (SELECT 1 FROM b WHERE a.xh = b.xh)
#12
9和11楼的对
UPDATE A
SET A.cj1 = (SELECT B.cj FROM B WHERE A.xh = B.xh)
WHERE EXISTS (SELECT 1 FROM B WHERE A.xh = B.xh)
UPDATE A
SET A.cj1 = (SELECT B.cj FROM B WHERE A.xh = B.xh)
WHERE EXISTS (SELECT 1 FROM B WHERE A.xh = B.xh)
#13
A表中数据B表肯定有,反之则不然。
#14
这样都能用,结贴了.....
#15
update a set cj1=(select cj from b where a.xh=b.xh)
#16
如果 在A,B表中xh都是主键的话可以使用如下语句
update (select a.xh,a.cj1,b.cj from A,B where A.xh=b.xh)
set cj1=cj
#17
学习了~~~
各种不同的方法
各种不同的方法
#18
支持此哥们,Merge into 判断是否合符你的要求,符合则更新,不符合还可以采取insert操作;
#19
merge into t_table t
using(select id,name,age,remark,t_id from t_table_1) t1
on(t.id=t1.id)
when matched then
update set t.name=t1.name,t.age=t1.age,t.remark=t1.remark,t.t_id=t1.t_id(需要更新字段)
when not matched then insert (t.id,t.name,t.age,t.remark,t.t_id)
values(t1.id,t1.name,t1.age,t1.remark,t1.t_id)
你可以按以上的格式自己测试一哈...
#20
UPDATE A SET cj1 = (SELECT cj FROM B WHERE A.xh = B.xh);
试试看,估计能解决!如果不能告诉我 下啊
试试看,估计能解决!如果不能告诉我 下啊
#21
20楼不能解决