首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Access >

恳求一句sql。解决方法

2012-03-17 
恳求一句sql。。。。。。。。。。。。。。。。。。。。。。。如下表T一个字段orderIndex1234567现在假设在程序中删除了2到5共4条纪

恳求一句sql。。。。。。。。。。。。。。。。。。。。。。。
如下表   T
一个字段
orderIndex
1
2
3
4
5
6
7
现在假设在程序中删除了2到5共4条纪录,希望把后面的6和7减去删除的纪录数(也就是4)
我是这样写的
update   t   set   orderIndex=orderIndex-(SELECT   count(*)   as   c   from   t   where   orderIndex> =2   and   orderIndex <=5)   where   orderIndex> 5  
麻烦高手帮我看看哪里出问题了,非常感谢


[解决办法]
--首先,update中不能用子查询,必须如下面的语法:

update t set orderIndex=orderIndex-dcount( "* ", "t ", "orderIndex> =2 and orderIndex <=5 ")
where orderIndex> 5


--其次,如果这4 条记录,已经删除,执行上面update无法将6、7替换为2、3,因为dcount()返回的是0。


所以,应该指定固定的值,如4,这样才能实现你的要求:

update t set orderIndex=orderIndex-4
where orderIndex> 5



[解决办法]
access中:
update t set orderIndex=orderIndex-dcount( "* ", "t ", "orderIndex between 2 and 5 ")
where orderIndex> 5
在ADO中,生成临时表解决

热点排行