0

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

提供したリンクで示唆されているように、を に変更しINTBIGINTも何も解決されないため、「オーバーフロー」の問題だとは思いません。

4

1 に答える 1