首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

Sql随机数的疑问解决方案

2012-09-19 
Sql随机数的疑问UPDATE BaseUser SET G_ID 10 WHERE G_ID 0 ANDis_manager 1AND ID IN(select top 3

Sql随机数的疑问
UPDATE BaseUser SET G_ID = 10 WHERE G_ID =0 AND is_manager = 1
 AND ID IN(select top 3 ID from BaseUser order by newid())

为什么我执行完这条语句, 不能随即的更新三条数据, 而只是随机更新一条,两条,或者不更新?

[解决办法]
AND ID IN(select top 3 ID from BaseUser order by newid())

因为ID 在TOP 3里面的只有一条,或者两条。或者没有。或者都有
[解决办法]

SQL code
--首先你要保证符合G_ID =0 AND is_manager = 1的记录有三条或三条以上,改为下面则一定更新随机的三条UPDATE BaseUser SET G_ID = 10 WHERE G_ID =0 AND is_manager = 1 AND ID IN(select top 3 ID from BaseUser  G_ID =0 AND is_manager = 1 order by newid())/*按你之前写的,即使有三条以上,但符合G_ID =0 AND is_manager = 1的ID却不一定在select top 3 ID from BaseUser order by newid())这个范围内*/
[解决办法]
select * from BaseUser WHERE G_ID =0 AND is_manager = 1
 AND ID IN(select top 3 ID from BaseUser order by newid())

你查一下这个每次能查出多少条数据,就知道问题所在啦

热点排行