обновить случайные числа для 100 лучших строк в sql? - PullRequest
5 голосов
/ 07 мая 2011

Мне нужно обновить случайные числа для первых 100 строк (поле) в sql. случайное число должно быть меньше 100. как это сделать?

Ответы [ 2 ]

12 голосов
/ 07 мая 2011

В SQL 2008

update top (100) MyTable
set MyField = cast(cast(crypt_gen_random(1) as int) * 100.0 / 256 as int)

Я считаю, что то же самое будет работать в SQL 2005.

[Изменить]

Если это не работает в SQL 2005, вы можете сделать это:

update top (100) MyTable
set MyField = abs(cast(newid() as binary(6)) % 100)
0 голосов
/ 07 мая 2011

Уверен, это нормально в 2k5;

--add rows numbers
;with ROWS(id, fld, rownum) as 
(
    select id, fld, 
    row_number() over (order by id asc) --this order defines your "top" 
    from tablename
)
update tablename
  set fld = 1 + abs(checksum(newid())) % 100 --dont use rand() as it will give the same value
  from ROWS inner join tablename on tablename.id = ROWS.id
  where rownum between 1 and 100 --limit to 100 rows
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...