CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

大虾下救命,sql怎么写?

楼主bingjiling(销售)2004-12-04 16:51:50 在 MS-SQL Server / 基础类 提问

大虾下救命  
   
  我遇见了一个问题不知道怎么解决  
   
  数据表  
   
   
  a             b                 c                 d  
   
  1             1                 1                 0  
  2             1                 1                 1  
  3             1                 1                 0  
  .             .                 .                 .  
  .             .                 .                 .  
  .             .                 .                 .  
  10000     .                 .                 1  
   
   
  每次随即的取得一条数据  
  保保证每次取得   d   为0;  
   
  取得的数据d改改变成1; 问题点数:100、回复次数:13Top

1 楼zjcxc(邹建)回复于 2004-12-04 17:02:04 得分 10

--随机取一条d=0的数据  
  select   top   1   *   from   表   where   d=0   order   by   newid()Top

2 楼zjcxc(邹建)回复于 2004-12-04 17:02:37 得分 10

取数后把d改为1,这个要看你的表中有没有主键了,没有主键无法解决记录定位问题.Top

3 楼lmj2003(雁不归)回复于 2004-12-04 17:03:25 得分 10

UPDATE   table   SET   d=1  
  WHERE   d=0   AND   a   IN(SELECT   MAX(a)   AS   a   FROM   table   WHERE   d=0   )  
  Top

4 楼lmj2003(雁不归)回复于 2004-12-04 17:05:43 得分 10

学习   zjcxc(邹建)   老大的  
   
  UPDATE   table   SET   d=1  
  WHERE   d=0   AND   a   IN(SELECT   top   1   a     FROM   table   WHERE   d=0   order   by   newid()   )  
  Top

5 楼lzymagi(逸)回复于 2004-12-04 17:07:14 得分 10

取d为0简单   update   d=1你没有条件取得唯一的行。是不可能做到的。  
  不过你用临时表就可以做  
  Top

6 楼zjcxc(邹建)回复于 2004-12-04 17:10:28 得分 10

to   lzymagi(逸)  
   
  临时表更新不回原表,还是有问题Top

7 楼yyl001(70-229问题连载)回复于 2004-12-04 17:14:22 得分 10

d=0  
  select   top   1   *   from   表   where   d=0    
  d=1  
  select   top   1   *   from   表   where   d=1Top

8 楼zjcxc(邹建)回复于 2004-12-04 17:23:41 得分 10

--如果a列是主键,则这样取就行了  
   
  declare   @a   int  
  select   top   1   @a=a   from   表   where   d=0   order   by   newid()  
  update   表   set   d=1   where   a=@a  
  select   *   from   表   where   a=@aTop

9 楼bingjiling(销售)回复于 2004-12-04 20:49:08 得分 0

大虾下救命  
   
  我遇见了一个问题不知道怎么解决  
   
  数据表示这样的  
   
   
  a             b                 c                 d  
   
  1             1                 1                 0  
  2             1                 1                 1  
  3             1                 1                 0  
  .             .                 .                 .  
  .             .                 .                 .  
  .             .                 .                 .  
  10000     .                 .                 1  
   
   
  每次{随机}的取得一条数据  
  保保证每次取得   d   为0;  
   
  取得的数据d改改变成1;  
   
  随机Top

10 楼xiaoxiangqing(肖祥清)回复于 2004-12-04 22:31:53 得分 10

--假設表名為stock,字段a為主鍵  
  declare   @a   int  
  select   top   1   @a=a   from   stock   where   d=0   order   by   newid()  
  --随机取一条d=0的数据  
  select   *   from   stock   where   a=@a  
  --更新剛才随机取的那條記錄為1  
  update   stock   set   d=1     where   a=@aTop

11 楼passionke(每一步都改变未来,却只能有一种结局!)回复于 2004-12-04 22:46:46 得分 0

upTop

12 楼zjcxc(邹建)回复于 2004-12-06 07:59:05 得分 0

--每次{随机}的取得一条数据,保保证每次取得   d   为0;取得的数据d改改变成1;  
  --就是这个嘛  
   
  declare   @a   int  
  select   top   1   @a=a   from   表   where   d=0   order   by   newid()  
  update   表   set   d=1   where   a=@a  
  select   *   from   表   where   a=@a  
  Top

13 楼zjcxc(邹建)回复于 2004-12-06 08:03:24 得分 10

--每次{随机}的取得一条数据,保保证每次取得   d   为0;取得的数据d改改变成1;  
   
  --如果你要更新前的状态,并且保证多用户下不出现冲突,则加锁  
   
  declare   @a   int,@b   int,@c   int,@d   int  
  begin   tran  
  --取数并加锁      
  select   top   1   @a=a,@b=b,@c=c,@d=d  
  from   表   with(TABLOCKX)    
  where   d=0   order   by   newid()  
   
  --更新  
  update   表   set   d=1   where   a=@a  
  commit   tran  
  --显示取得的数据  
  select   a=@a,b=@b,c=@c,d=@d  
   
  Top

相关问题

  • 如下的sql怎么写?
  • sql怎么写
  • sql怎么写?
  • SQL怎么写?
  • sql 怎么写?
  • VC下面怎么写SQL,怎么取SQL以后的结果,
  • 这句SQL 怎么写? (SQL SERVER)
  • 这句SQL 怎么写? (SQL SERVER)
  • sql语句怎么写?
  • 这句SQL怎么写?

关键词

  • 数据
  • 解决
  • top
  • intselect
  • 取得
  • 表
  • 主键
  • 大虾下救命
  • where
  • stock

得分解答快速导航

  • 帖主:bingjiling
  • zjcxc
  • zjcxc
  • lmj2003
  • lmj2003
  • lzymagi
  • zjcxc
  • yyl001
  • zjcxc
  • xiaoxiangqing
  • zjcxc

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo