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

高手请进,帮忙看看这句话.

楼主ayukowa(骑马倚斜桥,满楼红袖招。www.haoup.com(网络导航))2005-06-03 10:48:32 在 MS-SQL Server / 基础类 提问

很简单的一个问题,可就是过不了,我的目的是,在同一个表(dd_tz)中,将下个月的mbz的值用上个月的mbz来带入,条件是按dm相同的带入,我用以下两种方法写,得到一样的提示“子查询返回的值多于一个。当子查询跟随在   =、!=、<、<=、>、>=   之后,或子查询用作表达式时,这种情况是不允许的。”  
  方法一:update   dd_tz   set   mbz=(select   mbz   from   dd_tz   as   aa   where   rq='200505'   and   aa.dm=dm)   where   rq='200506'  
  方法二:update   aa   set   aa.mbz=bb.mbz   from   dd_tz   as   aa,(select   dm,mbz   from   dd_tz     where   rq='200505'   )   as   bb     where   aa.rq='200506'   and   aa.dm=bb.dm  
  各位高手指点迷津,谢谢。  
   
  问题点数:50、回复次数:12Top

1 楼zjcxc(邹建)回复于 2005-06-03 10:56:58 得分 40

update   dd_tz   set   mbz=(select   max(mbz)   from   dd_tz   as   aa   where   aa.rq=dd_tz.rq   and   aa.dm=dd_tz.dm)   where   rq='200506'  
  Top

2 楼zjcxc(邹建)回复于 2005-06-03 10:58:42 得分 0

--1.  
  update   dd_tz   set   mbz=(select   max(mbz)   from   dd_tz   as   aa   where   aa.rq='200505'   and   aa.dm=dd_tz.dm)   where   rq='200506'  
   
  --2.  
  update   aa   set   aa.mbz=bb.mbz    
  from   dd_tz   as   aa,dd_tz   bb  
  where   bb.rq='200505'   and   aa.rq='200506'  
      and   aa.dm=bb.dm  
   
  --估计你的   bm+rq不是唯一的.Top

3 楼ayukowa(骑马倚斜桥,满楼红袖招。www.haoup.com(网络导航))回复于 2005-06-03 11:02:26 得分 0

邹建,仍然是哪样的提示。  
  Top

4 楼ayukowa(骑马倚斜桥,满楼红袖招。www.haoup.com(网络导航))回复于 2005-06-03 11:04:43 得分 0

rq+dm是唯一的Top

5 楼zjcxc(邹建)回复于 2005-06-03 11:15:14 得分 0

完整的代码帖出来.  
   
  应该不是这里的问题.    
   
  如果你是用sql   server,那么你原来的写法,只有第一种方法,当rq+dm不唯一的时候才会出错,否则不会出错.Top

6 楼paoluo(一天到晚游泳的鱼)回复于 2005-06-03 11:34:41 得分 10

select   dm,mbz   from   dd_tz     where   rq='200505'  
   
  查询看看有多少条数据??Top

7 楼ayukowa(骑马倚斜桥,满楼红袖招。www.haoup.com(网络导航))回复于 2005-06-03 11:37:33 得分 0

就这一句话。数据库中的相关字段,6月的数据(5月也一样),谢谢你邹建  
  mbz               dm                 rq  
  .00 010010 200506  
  .00 010020 200506  
  .00 010030 200506  
  .00 010040 200506  
  .00 010050 200506  
  .00 010060 200506  
  .00 010070 200506  
  .00 010080 200506  
  .00 010090 200506  
  .00 010100 200506  
  .00 020010 200506  
  .00 020020 200506  
  .00 020030 200506  
  .00 020040 200506  
  .00 020050 200506  
  .00 020060 200506  
  .00 020070 200506  
  167.00 040010 200506  
  163.00 040020 200506  
  160.00 040030 200506  
  1.15 040040 200506  
  .00 040050 200506  
  .00 040060 200506  
  15.15 040080 200506  
  14.20 040090 200506  
  3.87 040100 200506  
  3.53 040110 200506  
  1.18 040120 200506  
  1.10 040130 200506  
  .73 040140 200506  
  .00 050101 200506  
  .00 050102 200506  
  .00 050103 200506  
  .00 050104 200506  
  .00 050105 200506  
  .00 050106 200506  
  .00 050201 200506  
  .00 050202 200506  
  .00 050203 200506  
  .00 050204 200506  
  .00 050205 200506  
  .00 050206 200506  
  .00 050301 200506  
  .00 050302 200506  
  .00 050303 200506  
  .00 050304 200506  
  .00 050305 200506  
  .00 050306 200506  
  35.00 040070 200506  
   
  7月的数据  
  mbz                 dm               rq  
  .00 010010 200507  
  .00 010020 200507  
  .00 010030 200507  
  .00 010040 200507  
  .00 010050 200507  
  .00 010060 200507  
  .00 010070 200507  
  .00 010080 200507  
  .00 010090 200507  
  .00 010100 200507  
  .00 020010 200507  
  .00 020020 200507  
  .00 020030 200507  
  .00 020040 200507  
  .00 020050 200507  
  .00 020060 200507  
  .00 020070 200507  
  .00 040010 200507  
  .00 040020 200507  
  .00 040030 200507  
  .00 040040 200507  
  .00 040050 200507  
  .00 040060 200507  
  .00 040080 200507  
  .00 040090 200507  
  .00 040100 200507  
  .00 040110 200507  
  .00 040120 200507  
  .00 040130 200507  
  .00 040140 200507  
  .00 050101 200507  
  .00 050102 200507  
  .00 050103 200507  
  .00 050104 200507  
  .00 050105 200507  
  .00 050106 200507  
  .00 050201 200507  
  .00 050202 200507  
  .00 050203 200507  
  .00 050204 200507  
  .00 050205 200507  
  .00 050206 200507  
  .00 050301 200507  
  .00 050302 200507  
  .00 050303 200507  
  .00 050304 200507  
  .00 050305 200507  
  .00 050306 200507  
  .00 040070 200507  
  Top

8 楼paoluo(一天到晚游泳的鱼)回复于 2005-06-03 11:43:27 得分 0

那试试这个看。  
   
  update   A   set   mbz=(select   mbz   from   dd_tz   where   rq='200505'   and   dm=A.dm)   from   dd_tz   A   where   rq='200506'Top

9 楼ayukowa(骑马倚斜桥,满楼红袖招。www.haoup.com(网络导航))回复于 2005-06-03 11:47:00 得分 0

仍然是那样的提示。  
  Top

10 楼ayukowa(骑马倚斜桥,满楼红袖招。www.haoup.com(网络导航))回复于 2005-06-03 11:53:12 得分 0

谢谢各位了,找找原因了,是因为这个表上有一个update的触发器,把触发器关了就能运行了,请问为什么开着触发器不让批量修改。  
  Top

11 楼paoluo(一天到晚游泳的鱼)回复于 2005-06-03 11:56:14 得分 0

那就怪了,你这样看看  
   
  执行这两句,看看记录的条数是不是一样的。  
   
  select   dm,mbz   from   dd_tz     where   rq='200505'  
   
  select   Distinct   dm,mbz   from   dd_tz     where   rq='200505'Top

12 楼paoluo(一天到晚游泳的鱼)回复于 2005-06-03 11:57:15 得分 0

回复人:   ayukowa(很爱"丫头")   (   )   信誉:100     2005-06-03   11:53:00     得分:   0      
     
     
        谢谢各位了,找找原因了,是因为这个表上有一个update的触发器,把触发器关了就能运行了,请问为什么开着触发器不让批量修改。  
   
       
     
  -----------------------------------------  
  那说明你的触发器写的有问题,检查一下。  
   
  Top

相关问题

  • 请问这句话是什么作用?
  • 请问这句话怎么理解?
  • 请问:这句话怎么用呀
  • 请问这句话怎么理解?
  • 请问这句话怎么翻译?
  • 请问这句话怎么解?
  • 请大家帮翻译这句话
  • OnPrepareDC (&ClientDC);请问这句话的含义?
  • 请问:这句话怎么理解:
  • 请问这句话错哪了?

关键词

  • 查询
  • 数据
  • mbz
  • rq
  • tz
  • dm
  • 触发器
  • aa
  • dd
  • 看看

得分解答快速导航

  • 帖主:ayukowa
  • zjcxc
  • paoluo

相关链接

  • SQL Server类图书

广告也精彩

反馈

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