|zyciis| 一个表的排序的问题 如何来做从小到大的不重复排序
如有表
tab
ID Name OrderID
1 AA 0
2 BB 2
3 CC 1
---------------------------
我现在比如插入一条数据
DD 1 那么结果就为
tab
ID Name OrderID
1 AA 0
2 BB 3
3 CC 2
4 DD 1
--------------------
也就是说当插入某个数据的时候,如果原来数据已经存在这个值
那么那个值就会+1 ,依次都全有数据
那上面的这个要求用什么办法来做最好呢
我现在是用.NET程序写,
但比如数据库有10000条记录,每修改一个都要修改这个记录,没有效率
大家会怎么做呢\
谢谢
------解决方案--------------------
我理解能力差
------解决方案--------------------没看懂你的意思,你说的+1是什么东西+1,ID列自增吗
------解决方案--------------------
------解决方案--------------------需要使用存储过程做比较好些
create proc MyInsert(@ID int, @Name varchar(20), @OrderID int)
as
begin
begin tran
-- 1 先更新大于这个OrderID值得记录
update 表
set OrderID = OrderID+1
where OrderID > @OrderID
-- 2 插入该纪录
insert 表(ID, Name,OrderID)
values(@ID,@Name,@OrderID )
commint
end
------解决方案--------------------如果你的OrderID列不是从外部指定,而要在数据库自增,总是让它等于id不就行了
------解决方案--------------------自己先建一个表。
如:
SQL code
CREATE TABLE [ConRecLed1] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
......下面你需要的字段跟你原先的表一个
)
GO
------解决方案--------------------
执行两段sql,就和楼上写的,现更新,在插入,你是不是要的这个。
sql加个参数
------解决方案--------------------
感觉你完全没必要那么插入数据
你只要通过MAX函数查询出该列的最大值再在基础上+1就可以了
如果是升序排列的话 可以用 select * from 表名 order by 列名 asc(降序改为 desc)
------解决方案--------------------