복붙노트

[SQL] T-SQL의 UPDATE의 모든 행에 대해 RAND 차이가

SQL

T-SQL의 UPDATE의 모든 행에 대해 RAND 차이가

나는 시험 데이터가있는 테이블을 업데이트 할 수있는 후속의 T-SQL을 가지고 :

UPDATE
SomeTable
SET
    Created = GETDATE ( ) - CAST ( RAND ( ) * 365 AS int ) ,
    LastUpdated = GETDATE ( ) - CAST ( RAND ( ) * 365 AS int )

나는 불행하게도 그것은 모든 행에 대해 동일한 날짜를 사용, 그것은 지난 해에 무작위로 모든 DAE를 선택하고 싶다. 그것은 업데이트 모든 행 무작위로 얻을 수있는 가장 좋은 방법은 무엇입니까?

해결법

  1. ==============================

    1.사용 RAND (체크섬 (CHANGE ()))

    사용 RAND (체크섬 (CHANGE ()))

    CHECKSUM (NEWID ()가) 이미 임의 있기 때문에 귀하의 경우에, 당신은 checkum 모듈로 할 수있다.

    CHECKSUM(NEWID()) % 365
    
  2. ==============================

    2.당신은 단지 지난 해의 일이를 사용하려는 경우 (@ GBN의 답변에 따라) :

    당신은 단지 지난 해의 일이를 사용하려는 경우 (@ GBN의 답변에 따라) :

    select GETDATE ( ) - ABS( CHECKSUM(NEWID()) % 365 )
    
  3. from https://stackoverflow.com/questions/1214748/rand-not-different-for-every-row-in-t-sql-update by cc-by-sa and MIT license