と呼ばれることは決してありませんかどうかを確認することはできません。T-SQLは:私はこのようなテーブル持っている理由句は
CREATE TABLE [dbo].[Scores](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Score] [float] NULL,
CONSTRAINT [PK_Scores] PRIMARY KEY CLUSTERED
(
[Id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
をそして、私はいくつかのINSERT
INSERT INTO Scores (Score) VALUES (0.5)
INSERT INTO Scores (Score) VALUES (2)
INSERT INTO Scores (Score) VALUES (3)
INSERT INTO Scores (Score) VALUES (4.5)
を持ってそれから私は私がすべて変更する必要があることを実現しますスコアは0.5が2などになるはずです。 だから私はそれを手助けするためにカーソルを使用します。あなたがよりよい解決策を提案する前に
DECLARE @id int
DECLARE @score float
DECLARE myCursor CURSOR LOCAL FAST_FORWARD FOR
SELECT Id, Score
FROM [dbo].[Scores]
OPEN myCursor FETCH NEXT FROM myCursor INTO @id, @score
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'Id: ' PRINT @id
PRINT 'Score: ' PRINT @score
-- do your tasks here
FETCH NEXT FROM myCursor INTO @id, @score
IF @score = 2
BEGIN
UPDATE Scores set Score = 3.0 WHERE Id = @id
END
IF @score = 3
BEGIN
UPDATE Scores set Score = 4.0 WHERE Id = @id
END
IF @score = 0.5
BEGIN
UPDATE Scores set Score = 2.0 WHERE Id = @id
END
IF @score = 4.5
BEGIN
UPDATE Scores set Score = 5.0 WHERE Id = @id
END
END
CLOSE myCursor DEALLOCATE myCursor
、私に教えてくださいなぜ この行が呼ばれることは決してありません:このよう
UPDATE Scores set Score = 2.0 WHERE Id = @id
"より良いソリューションを提案する前に、なぜこの行がなぜ呼び出されないのかを教えてください。" –
..... ..... – DaveShaw
SQLには最適化とカーソルの問題があります。カーソルの明示的な理由がない場合は、私が掲示した更新とケースの解決方法に固執します。 – DaveShaw