标题:SQL问题,update 问题,请高手指教!
只看楼主
fwjtjb
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-1-7
结帖率:0
已结贴  问题点数:20 回复次数:11 
SQL问题,update 问题,请高手指教!
update Ap_detail set Ap_detail.icamount= from Ap_detail,purbillvouchs where Ap_detail.ccode=purbillvouchs.cdebithead and Ap_detail.cvouchid='02115784'and purbillvouchs.pbvid=6900 and Ap_detail.icamount<>



我写了这样一个语句 可更新的结果 是每个符合Ap_detail.cvouchid='02115784'and purbillvouchs.pbvid=6900 条件的 记录的 icamount 都变成一样的了

而我想要的是 根据purbillvouchs表中purbillvouchs.pbvid=6900 的记录 和Ap_detail.cvouchid='02115784'的记录一一对应起来 更改
搜索更多相关主题的帖子: SQL update 指教 
2010-07-28 11:04
dearwolf4128
Rank: 5Rank: 5
来 自:陕西西安
等 级:职业侠客
威 望:6
帖 子:79
专家分:365
注 册:2010-7-2
得分:4 
按照你写的语句是应该生成:每个符合Ap_detail.cvouchid='02115784'and purbillvouchs.pbvid=6900 条件的 记录的 icamount 都改变了;但我不明白你写的:"而我想要的是 根据purbillvouchs表中purbillvouchs.pbvid=6900 的记录 和Ap_detail.cvouchid='02115784'的记录一一对应起来 更改 " 这句话的意思,楼主再说明白点,看我会不?
2010-07-28 13:13
fwjtjb
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-1-7
得分:0 
就是 purbillvouchs表中的记录是都不相同的  所以我要改变的icamount也应该和purbillvouchs表中的记录对应起来 数据也是不同的
2010-07-28 13:32
dearwolf4128
Rank: 5Rank: 5
来 自:陕西西安
等 级:职业侠客
威 望:6
帖 子:79
专家分:365
注 册:2010-7-2
得分:0 
你把两张表的视图贴出来一小部分,估计不光我不明白你的意思,其他人也不一定明白,我把你写的看了6遍了,还有点不太明白.应该是你 的where语句的条件设置的不太对,才每按照你的意愿来
2010-07-28 14:06
fwjtjb
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-1-7
得分:0 

Ap_detail
2010-07-28 14:33
dearwolf4128
Rank: 5Rank: 5
来 自:陕西西安
等 级:职业侠客
威 望:6
帖 子:79
专家分:365
注 册:2010-7-2
得分:0 
老大,你把表Ap_detail的Ap_detail.cvouchid,Ap_detail.ccode,Ap_detail.cvouchid等列
        和表purbillvouchs的 ,purbillvouchs.cdebithead ,Ap_detail.cvouchid 等列  列出来就行了,关键是看你的where语句中的列有什么问题没?你where语句中的条件列表中就没几个,别人怎么判断你的where语句的正确性。麻烦你一下!
2010-07-28 15:52
aei135
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:232
专家分:1176
注 册:2009-4-6
得分:4 
我觉得你的语句写的有问题,应该这样才对,就是要去掉所更新列的别名,你试试看对不对,对了告诉一声啊!
update Ap_detail set icamount= from Ap_detail,purbillvouchs where Ap_detail.ccode=purbillvouchs.cdebithead and Ap_detail.cvouchid='02115784'and purbillvouchs.pbvid=6900 and Ap_detail.icamount<>
2010-07-29 21:52
aei135
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:232
专家分:1176
注 册:2009-4-6
得分:0 
笔误,是所更新列的表名,呵呵!
2010-07-29 21:53
aei135
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:232
专家分:1176
注 册:2009-4-6
得分:0 
搞错了,经过测试你的语句语法并无问题,看来可能是你的表的关联键之间的问题吧,那还是得像6楼所说的把update语句所需要的表和列查询出来贴过来看看了
2010-07-30 09:23
autobot
Rank: 4
等 级:业余侠客
帖 子:71
专家分:202
注 册:2007-9-6
得分:4 
而我想要的是 根据purbillvouchs表中purbillvouchs.pbvid=6900 的记录 和Ap_detail.cvouchid='02115784'的记录一一对应起来 更改

是这样嘛?
程序代码:
UPDATE    Ap_detail
SET       ad.icamount=FROM      Ap_detail ad ,purbillvouchs pb
WHERE     Ad.ccode = pb.cdebithead
    and ad.cvouchid = '02115784'
    and pb.pbvid = [color=#800000; font-weight: bold]6900[/color]
    and Ad.icamount <> 

你说的一一对应起来更改,没明白什么意思,如果就是把ad.icamount 和 这两个字段不同的全改成一样的,其实我感觉你可以不要最后一个条件?不知道我理解得对不对?
2010-07-30 11:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-314153-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.425765 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved