首页新闻找找看学习计划

SQL 随即数不能实现为什么?

0
悬赏园豆:5 [已解决问题] 解决于 2012-09-05 12:14

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())

 

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

Crazylight的主页 Crazylight | 初学一级 | 园豆:171
提问于:2012-09-04 19:57
< >
分享
最佳答案
0

UPDATE BaseUser SET G_ID = 10 WHERE ID IN(select top 3 ID from BaseUser where  G_ID =0 AND is_manager = 1 order by newid())

收获园豆:2
happydaily | 小虾三级 |园豆:581 | 2012-09-04 21:15

恩  对了  谢谢

Crazylight | 园豆:171 (初学一级) | 2012-09-05 12:13
其他回答(3)
0

WHERE G_ID =0 AND is_manager = 1
AND ID IN(select top 3 ID from BaseUser order by newid())

3个and的条件,应该是随机的有几条符合,但是肯定是不大于3条的

 

收获园豆:1
chenping2008 | 园豆:9836 (大侠五级) | 2012-09-04 21:22

对的 谢谢

支持(0) 反对(0) Crazylight | 园豆:171 (初学一级) | 2012-09-05 12:13
0

最主要的原因是你的外层where语句做了限定。

WHERE G_ID =0 AND is_manager = 1

收获园豆:1
RDIFramework.NET | 园豆:316 (菜鸟二级) | 2012-09-05 09:01

是这个原因。谢谢

支持(0) 反对(0) Crazylight | 园豆:171 (初学一级) | 2012-09-05 12:13
0

使用select top 3 ID from BaseUser order by newid()  如果你的记录总数大于3笔绝对是能取出3笔来

WHERE G_ID =0 AND is_manager = 1  在这三笔基础上再进行了条件限制,所以出不来哦

一楼的这个方法

UPDATE BaseUser SET G_ID = 10 WHERE ID IN(select top 3 ID from BaseUser where  G_ID =0 AND is_manager = 1 order by newid())  是对的。

收获园豆:1
Shannon | 园豆:601 (小虾三级) | 2012-09-05 11:43

恩  的确  谢谢了

支持(0) 反对(0) Crazylight | 园豆:171 (初学一级) | 2012-09-05 12:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册