如何在数据库中维护一个记录顺序号?

xiaocuo_zrf 2010-12-31 09:47:09
小弟前台用Delphi,一张表格内支持 增加和插入操作
有时候不知咋的
录入的数据再Select过来来 顺序就乱了(没有按照任何字段排序,后台无索引,有主键,主键是GUID类型的。)
不是按照录入的顺序了。
因此小弟想在后台构建一个顺序号,按顺序号排序。免得乱掉。
...全文
320 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Shawn 2011-01-02
  • 打赏
  • 举报
回复
CREATE TABLE test
(
ID INT,
Name VARCHAR(100),
Sort INT
)

INSERT INTO test
SELECT 1, 'a', 1 UNION ALL
SELECT 2, 'b', 2 UNION ALL
SELECT 3, 'c', 3 UNION ALL
SELECT 4, 'd', 4

SELECT * FROM TEST
--插入时(在前台获取你的新的sort编号,插入在第3行)
UPDATE test SET sort = sort + 1 WHERE sort >= 3
INSERT INTO test VALUES(5, 'F', 3)
--追加时
INSERT INTO test SELECT 6, 'G', (SELECT COUNT(*)+1 FROM test)
--显示
SELECT * FROM test ORDER BY [sort]
Shawn 2011-01-02
  • 打赏
  • 举报
回复
#1. 无论追加还是插入操作,数据表都会在最后一行追加一条记录
#2. 想要达到你的目的,需要另外加一个字段,来记录想要的"排序值";而这个"排序值"是你在插入或追加时动态赋值的
#3. 说出你想要的排序规则。然后大家就可以帮你解决了
xiaocuo_zrf 2011-01-01
  • 打赏
  • 举报
回复
我表达问题没有表达清楚:

其实我的终极目的是:我能够通过建立一个排序字段,表内数据按照我追加或者插入的顺序进行排序。。。自增字段 按照增加的次序是可以,按照插入的次序就有点困难了。
[Quote=引用 9 楼 dawugui 的回复:]
引用 8 楼 xiaocuo_zrf 的回复:
排序字段的内容怎么维护
因为支持插入操作
不是一味的新增,新增追加的话可以用 自增字段。


引用 1 楼 wxf163 的回复:
建一个排序字段,
查询的时候

order by 排序字段。

1.先将表增加一个序号字段.
2.按照现有数据更新这个字段.
--update tb set px = (select coun……
[/Quote]
billpu 2010-12-31
  • 打赏
  • 举报
回复
主键的作用是标识行的唯一
如果楼主是要说明顺序,可以用自增列
sglogin 2010-12-31
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ohfox 的回复:]
用一个identity(1,1)的int列吧.自增的
[/Quote]
然后 order by 这个字段。升序降序都可以
dawugui 2010-12-31
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xiaocuo_zrf 的回复:]
排序字段的内容怎么维护
因为支持插入操作
不是一味的新增,新增追加的话可以用 自增字段。


引用 1 楼 wxf163 的回复:
建一个排序字段,
查询的时候

order by 排序字段。
[/Quote]
1.先将表增加一个序号字段.
2.按照现有数据更新这个字段.
--update tb set px = (select count(1) from tb where 比较字段<t.比较字段) + 1 from tb t
3.新增的用 isnull(max(px),0) + 1
xiaocuo_zrf 2010-12-31
  • 打赏
  • 举报
回复
排序字段的内容怎么维护
因为支持插入操作
不是一味的新增,新增追加的话可以用 自增字段。

[Quote=引用 1 楼 wxf163 的回复:]
建一个排序字段,
查询的时候

order by 排序字段。
[/Quote]
zhuyt3k 2010-12-31
  • 打赏
  • 举报
回复
使生成的GUID连贯,再检索的时候就看你需要了。
ohfox 2010-12-31
  • 打赏
  • 举报
回复
用一个identity(1,1)的int列吧.自增的
kevin_long 2010-12-31
  • 打赏
  • 举报
回复
如果你不需要按照特定的字段排序。可以在数据库中 加一个 自增的ID 号。按照此ID排序 就是你录入的顺序了
Rotel-刘志东 2010-12-31
  • 打赏
  • 举报
回复
主键的排序就可以了。
飘零一叶 2010-12-31
  • 打赏
  • 举报
回复
order by 主键 ,就可以
ForFumm 2010-12-31
  • 打赏
  • 举报
回复
添加索引,或者自己指定排序
王向飞 2010-12-31
  • 打赏
  • 举报
回复
建一个排序字段,
查询的时候

order by 排序字段。
Shawn 2010-12-31
  • 打赏
  • 举报
回复
#1. 主键不要用GUID,用int identity(1, 1). 这样以后的数据会按照生成的顺序物理排序
#2. 至于现在的数据,参考9楼

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧