大家帮忙看看!解决思路

大家帮忙看看!!急啊!!!表AF_IDF_NameF_Flag1aaa02bbb03ccc04ddd05eee06fff0我要通过SQL语句随机抽取10%的

大家帮忙看看!!急啊!!!
表A
      F_ID                 F_Name                 F_Flag
        1                     aaa                           0
        2                     bbb                           0
        3                     ccc                           0
        4                     ddd                           0
        5                     eee                           0
        6                     fff                           0

我要通过SQL语句随机抽取10%的记录,把抽中的记录的F_Flag字段改为1,没抽中的记录F_Flag改为2

比如抽中了前三条记录,结果为
表A
      F_ID                 F_Name                 F_Flag
        1                     aaa                           1
        2                     bbb                           1
        3                     ccc                           1
        4                     ddd                           2
        5                     eee                           2
        6                     fff                           2

[解决办法]
Update a set a.F_Flag=(case when b.F_ID is null then 2 else 1 end)
from 表A as a Left Join (Select TOP 10 PERCENT F_ID from 表A) as b
on a.F_ID=b.F_ID
[解决办法]
declare @t table(F_ID int,F_Name varchar(4),F_Flag int)
insert into @t select 1, 'aaa ',0
insert into @t select 2, 'bbb ',0
insert into @t select 3, 'ccc ',0
insert into @t select 4, 'ddd ',0
insert into @t select 5, 'eee ',0
insert into @t select 6, 'fff ',0

Update a
set
F_Flag=(case when b.F_ID is null then 2 else 1 end)
from
@t a
Left Join


(Select TOP 10 PERCENT F_ID from @t order by newid()) b
on
a.F_ID=b.F_ID

select * from @t
/*

F_ID F_Name F_Flag
----------- ------ -----------
1 aaa 2
2 bbb 2
3 ccc 2
4 ddd 1
5 eee 2
6 fff 2
*/