有两张表,A和B,分别人两个字段Q和W
例:
A表的结构:
Q W
1 OE
2 IE
3 OL
4 MD
5 HG
B表的结构:
Q W
1 NULL
2 NULL
如何用游标实现以下要求:
如果A表中的Q=B表中的Q,那么把A中的W信息更新B表中的W,如果A中的Q不等于B中的Q的,那么就把A表中的Q和W都添加到B表中的Q和W
解决方案 »
- 求相同列不同行字符串相加SQL
- 使用Sqlserver2005开发,如何让用户不安装Sqlserver2005也可以使用??
- SQL2005如何建立链接服务器
- SQLSEVER2005 显示未初始化的订阅
- powerDesigner的CDM中Identifier是做什的呢??
- 在MSSQL<企业管理器>界面中操作数据库后,可不可以看到相关动作的SQL语句?
- 请教一个问题,请各位大虾不吝赐教
- 谁会写这个SQL语句,帮我啊!
- 求教怎么将一个用join关联的SQL转换成 *= 这种方式关联
- 征求跨平台的解决方案,100分送上,如果详细,成倍送上,给我参考地址也行
- 求一sql语句,向下关联检索
- 求一句Sql!急
create table #B(q int,w varchar(100))insert into #A(q,w)
select 1,'OE' union all
select 2,'IE' union all
select 3,'OL' union all
select 4,'MD' union all
select 5,'HG'insert into #b(q,w)
select 1,NULL union all
select 2,NULLselect * from #a
select * from #bupdate #b set w=#a.w
from #a inner join #b on #a.q=#b.qinsert into #b(q,w)
select #a.q,#a.w
from #a left join #b on #a.q=#b.q
where #b.q is nullselect * from #a
select * from #bdrop table #a,#b
DECLARE cur CURSOR FOR SELECT Q,W FROM A
OPEN cur
FETCH NEXT FROM cur INTO @Q,@W
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
UPDATE B SET W=@W WHERE Q=@Q
IF @@ROWCOUNT=0
INSERT B(Q,W) VALUES(@Q,@W)
END
FETCH NEXT FROM cur INTO @Q,@W
END
CLOSE cur
DEALLOCATE cur其实可不用游标来实现:
UPDATE B SET W=A.W FROM B JOIN A ON B.Q=A.Q
INSERT B(Q,W) SELECT Q,W FROM A WHERE NOT EXISTS(SELECT * FROM B WHERE B.Q=A.Q)
insert into @A select 1 , 'OE'
insert into @A select 2 , 'IE'
insert into @A select 3 , 'OL'
insert into @A select 4 , 'MD'
insert into @A select 5 , 'HG'declare @B table (Q int ,W varchar(10))
insert into @B select 1 , ''
insert into @B select 2 , ''
update b set b.W=a.W from @B as b , @A as a where a.A=b.Q
select * from @B结果1 OE
2 IE