我需要在没有光标的情况下进行此查询,但是如何?
我的老板说不要使用游标,为什么不呢?没有人怎么写?
我创建了一个名为tbl_StudentCoverage的表,该表具有SSN varchar(9)和fklogin int。
我还创建了一个表Mstr_tbl_login,该表的intID int是tbl_StudentCoverage和strFour varchar(4)中fklogin的外键。
我想用tbl_StudentCoverage中的intID与fklogin匹配的SSN的后四个更新Mstr_tbl_login中的strFour。
我在想我的老板不了解SQL,或者他不了解我需要做什么。我认为自己是一位经验丰富的SQL专家。
USE mstr_Database
GO
DECLARE @fkLogin int
DECLARE @ssn varchar(9)
DECLARE NW4 CURSOR FOR
SELECT fkLogin, SSN FROM mstr.tbl_StudentCoverage
OPEN NW4
FETCH NEXT FROM NW4
INTO @fkLogin, @ssn
WHILE (@@FETCH_STATUS = 0)
BEGIN
IF (SELECT intID FROM mstr.mstr_tbl_Login WHERE intID = @fkLogin) = @fkLogin
BEGIN
UPDATE mstr.mstr_tbl_Login SET strFour = right(@ssn,4) WHERE intID = @fkLogin
END
FETCH NEXT FROM NW4
INTO @fkLogin, @ssn
END
print 'done'
CLOSE NW4
DEALLOCATE NW4
GO
没有错误,这很完美。只是我的老板不想游标。
答案 0 :(得分:3)
你进步了吗?试试这个。
update
A
set
A.strFour = right(B.ssn,4)
from
mstr.mstr_tbl_Login A
join
mstr.tbl_StudentCoverage B
on
B.fklogin = A.intId