恳求一句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中,生成临时表解决