高手请进,帮忙看看这句话.
很简单的一个问题,可就是过不了,我的目的是,在同一个表(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




