读书人

关于数据插入或删除后更新排列序号的

发布时间: 2012-05-28 17:59:33 作者: rapoo

关于数据插入或删除后,更新排列序号的问题
简单点说,比如我有一个库表,字段就是人名,在查询时要根据用户自已的需求来排序,所以再加了一个字段记录序号,比如:
张三 1
李四 2
王老五 3
赵大 4
。。。。。

现在,在应用程序界面新增了一个人名进去,比如在李四前面加了一个人:甲六,那新的排序应该是:
张三 1
甲六 2
李四 3
王老五 4
赵大 5
。。。。。

我想大家应该明白我的意思了吧。现在的问题是,在应用程序中如何用最好的方法来实现这个看似简单的功能,是不是只能一条一条记录更新过去?那当数据量很大时岂不是一点点改动就要更新一大批数据?有没有做过类似功能的人给个建议?

[解决办法]
假如加的是 甲六 2,那么先用sql去update,因为你知道当前的sortid,所以将大于等于它的都加一

update xxxxx set sortid=sortid+1 where sortid=2

然后插入 甲六,他的sortid为当前sortid=2,因为之前的2已经加一变成3了
[解决办法]
这个问题 我建议不要如此处理 之前也遇到过这样的问题

这儿给出我个人的处理方法
程序的实体类确实有orderNo字段,在数据库表中我并没有存储排序的order_no字段而是用视图查询结果来替代
SELECT * FROM info_job_index_catalog

1aABAP程序师招聘320181
2aABAP程序员招聘320181
3aABAP程序招聘 320181
4 bBCF工程师招聘 320181
5 b备份人员 320181


CREATE VIEW JobIndexCatalog AS(
SELECT *,ROW_NUMBER() OVER(PARTITION BY index_letter ORDER BY job_name) order_no
FROM info_job_index_catalog
)

SELECT * FROM JobIndexCatalog

1aABAP程序师招聘320181 1
2aABAP程序员招聘320181 2
3aABAP程序招聘 320181 3
4 bBCF工程师招聘 320181 1
5 b备份人员 320181 2

读书人网 >C#

热点推荐