SQL Server 2008 で結果セットの行ごとに生成されるランダム値に問題があります。ここで同様の質問を見つけましたが、提案された回答を実装すると、以前と同じ問題が発生しました。以下に示したクエリを実行すると、各行で新しい値を呼び出しているにもかかわらず、同じ値が連続した行に表示されることがあるようですNEWID()
。
DECLARE @Id int = 0
DECLARE @Counter int = 1
DECLARE @Value int
CREATE TABLE #Table1
(
id int identity(1,1)
,Value int
)
WHILE @Counter < 100000
BEGIN
INSERT INTO #Table1 (Value)
SELECT CAST(RAND(CHECKSUM(NEWID())) * 100000 as INT)
SET @Counter += 1
END
SET @Counter = 0
WHILE @Counter < 5
BEGIN
SELECT
@Value = T.Value
,@Id = T.id
FROM #Table1 T
WHERE T.id = CAST(RAND(CHECKSUM(NEWID())) * 100000 as INT) + 1 + @Counter
IF @Id <> 0
SELECT @Value AS Value ,@Id as ID
SET @Counter += 1
END
DROP TABLE #Table1
提供したリンクで示唆されているように、を に変更しINT
てBIGINT
も何も解決されないため、「オーバーフロー」の問題だとは思いません。