CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

SQL语句,在企业管理器中或者查询分析器中如何实现?

楼主roseandwort(常春藤)2005-10-17 10:57:01 在 Web 开发 / ASP 提问

SQL语句,我先在企业管理器中输入:SELECT   TOP   2500   classname,   client,   truenamemobile  
  FROM   Sm_address  
  WHERE   (classname   =   '2003购车无地址')然后再跟一句update   Sm_address   set   classname   =   '2003购车无地址1'是否可以把选择出的这2500条的classname字段值改掉?    
   
  现在经多方询问是不可以的,那要怎么才能实现呢?  
  问题点数:10、回复次数:17Top

1 楼itzhiren(itzhiren)回复于 2005-10-17 11:06:16 得分 0

打开查询分析器,当前数据库选择为你要更新的数据库,然后输入  
  update   Sm_address   set   classname   =   '2003购车无地址1'   where   classname   =   '2003购车无地址'  
   
  执行,就可以了  
  Top

2 楼itzhiren(itzhiren)回复于 2005-10-17 11:07:02 得分 0

当然,在企业管理器里面执行也可以,只要语句对就行了。  
   
  这两句合并成一句就可以了  
   
  update   Sm_address   set   classname   =   '2003购车无地址1'   where   classname   =   '2003购车无地址'  
  Top

3 楼roseandwort(常春藤)回复于 2005-10-17 11:13:36 得分 0

可我还要选择出2500条呢Top

4 楼itzhiren(itzhiren)回复于 2005-10-17 11:16:50 得分 0

SELECT   TOP   2500   classname,   client,   truenamemobile  
  FROM   Sm_address  
  WHERE   (classname   =   '2003购车无地址')  
   
  就可以了Top

5 楼itzhiren(itzhiren)回复于 2005-10-17 11:19:32 得分 0

其实在查询分析器里面,如果你输入了以下两条语句:  
  SELECT   TOP   2500   classname,   client,   truenamemobile  
  FROM   Sm_address  
  WHERE   (classname   =   '2003购车无地址')  
   
  update   Sm_address   set   classname   =   '2003购车无地址1'   where   classname   =   '2003购车无地址'  
   
  那么如果直接执行,这两条语句就同时执行了;如果选中了其中一条语句,就执行你选中的哪一条语句,另外一条不执行。Top

6 楼roseandwort(常春藤)回复于 2005-10-17 11:21:37 得分 0

我同时输入两条,只执行那条select,后面的update不执行,不会两条都执行的,我现在用的这句:  
  UPDATE   Sm_address  
  SET   classname   =   '2003购车无地址1'  
  FROM   (SELECT   TOP   2500   classname,   client,   truenamemobile  
                  FROM   Sm_address)  
  WHERE   (classname   =   '2003购车无地址')  
   
  但:在关键字   'WHERE'   附近有语法错误。所以不知道怎么改了Top

7 楼AppleBBS(Dicky)回复于 2005-10-17 11:22:04 得分 0

企业管理器一次只能执行一条语句的Top

8 楼itzhiren(itzhiren)回复于 2005-10-17 11:25:56 得分 0

UPDATE   Sm_address  
  SET   classname   =   '2003购车无地址1'  
  WHERE   (classname   =   '2003购车无地址')  
  这样就可以了,不需要那个from子句Top

9 楼roseandwort(常春藤)回复于 2005-10-17 11:30:30 得分 0

现在表里有1万条记录,classname字段的值是:2003购车无地址,我想把这一万条记录分成4个2500条,classname字段的值分别是:2003购车无地址1,2003购车无地址2,2003购车无地址3,2003购车无地址4   所以只能用这条语句来试试,没想到更好的办法    
   
  所以必须要选中2500条然后再update   字段classname的值Top

10 楼itzhiren(itzhiren)回复于 2005-10-17 11:34:43 得分 0

这一万条记录肯定有一个唯一标志吧?(我给你假设是id)  
  你可以这样:  
  UPDATE   Sm_address  
  SET   classname   =   '2003购车无地址1'  
  WHERE   (classname   =   '2003购车无地址')   and   id<=2500  
   
  UPDATE   Sm_address  
  SET   classname   =   '2003购车无地址1'  
  WHERE   (classname   =   '2003购车无地址')   and   id>2500   and   id<=5000  
   
  UPDATE   Sm_address  
  SET   classname   =   '2003购车无地址1'  
  WHERE   (classname   =   '2003购车无地址')   and   id>5000   and   id<=5500  
   
  UPDATE   Sm_address  
  SET   classname   =   '2003购车无地址1'  
  WHERE   (classname   =   '2003购车无地址')   and   id>5500   and   id<=10000  
   
  Top

11 楼itzhiren(itzhiren)回复于 2005-10-17 11:35:23 得分 10

上面写错了:  
   
  UPDATE   Sm_address  
  SET   classname   =   '2003购车无地址1'  
  WHERE   (classname   =   '2003购车无地址')   and   id<=2500  
   
  UPDATE   Sm_address  
  SET   classname   =   '2003购车无地址2'  
  WHERE   (classname   =   '2003购车无地址')   and   id>2500   and   id<=5000  
   
  UPDATE   Sm_address  
  SET   classname   =   '2003购车无地址3'  
  WHERE   (classname   =   '2003购车无地址')   and   id>5000   and   id<=5500  
   
  UPDATE   Sm_address  
  SET   classname   =   '2003购车无地址4'  
  WHERE   (classname   =   '2003购车无地址')   and   id>5500   and   id<=10000  
   
  Top

12 楼itzhiren(itzhiren)回复于 2005-10-17 11:37:03 得分 0

当然,这种方法要从最后一句开始执行,然后倒数第二句,倒数第三句,倒数第四句Top

13 楼hl2lm(有事请打我手机!)回复于 2005-10-17 11:40:02 得分 0

顶  
  Top

14 楼lsgis2001(程序爱好者)回复于 2005-10-17 11:40:23 得分 0

用存储过程吧。  
  可以写一个小程序然后用“游标”来处理。Top

15 楼roseandwort(常春藤)回复于 2005-10-17 11:44:23 得分 0

噢,真够麻烦的,可我这个表里classname的值除了是:'2003购车无地址之外还有值是别的很多记录,那个id是穿插的不是一直顺下去的.Top

16 楼ylczy(学无止境)回复于 2005-10-17 11:44:33 得分 0

用子表查询,这样写对不对  
  update   Sm_address   set   classname   =   '2003购车无地址1'   where   classname   in  
  (SELECT   TOP   2500   classname,   client,   truenamemobile  
  FROM   Sm_address   WHERE   classname   =   '2003购车无地址')  
  Top

17 楼roseandwort(常春藤)回复于 2005-10-17 12:50:02 得分 0

ylczy(学无止境)   ,你的那句也不行Top

相关问题

  • 急问!!!在企业管理器中可以建立名为数字的用户表,但用查询分析器写SQL语句为什么不可以?
  • Sql服务管理器能够启动,企业管理器和查询分析器连不上了……
  • 为何有的语句在查询分析器中可以,而在企业管理器中非法?
  • 现在我的企业管理器打不开了,只能用查询分析器,可我不知道怎样用SQL语句在原表的基础上增加字段并设置其类型
  • 为什么我的企业管理器连不上远程sql server数据库?查询分析器却可以
  • 如何在查询分析器用语句登陆网络sql服务其
  • 在SQL查询分析器里修改表中数据(语句不会写)??!!
  • SQL语句在ASP中不能执行,在查询分析器中行
  • 怎样在查询分析器里执行所有的SQL语句
  • 请教一条简单的SQL查询分析器中的语句

关键词

  • 语句
  • 分析器
  • 执行
  • 字段
  • client
  • 选择
  • top
  • 购车无地址
  • classname
  • sm

得分解答快速导航

  • 帖主:roseandwort
  • itzhiren

相关链接

  • Web开发类图书

广告也精彩

反馈

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