求个关于排序的思路

zhengshuanger 2008-04-03 09:47:30
关于排序

我有一表..如下

id name
1 A
2 B
3 C
4 D
5 E
6 F

有一天..我想按如下顺序排序该表并显示

id name
1 A
3 C
2 B
4 D
5 E
6 F

又有一天.我想按如下顺序排序该表并显示

id name
6 F
1 A
2 B
3 C
4 D
5 E

也就是说.需要有一列记录每条记录的排序位置.然后按这列
排序就好了..不知道应该怎么设计这个表呢?谢谢.在线等
...全文
303 42 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶子 2008-04-03
  • 打赏
  • 举报
回复

SELECT
[Second] = CONVERT(bigint, DATEDIFF(mi, '1900-1-1', GETDATE())) * 60,
[millSecond] = CONVERT(bigint, DATEDIFF(mi, '1900-1-1', GETDATE())) * 60 * 1000

如果你担心的话,用毫秒吧
叶子 2008-04-03
  • 打赏
  • 举报
回复
我只是提个思路,可行不可行得你自己根据你的情况分析。
:)
zhengshuanger 2008-04-03
  • 打赏
  • 举报
回复
可能性总是存在的吧..
叶子 2008-04-03
  • 打赏
  • 举报
回复
我做了一年多网站了,数据的排序都是这样的方法。
主要是数据添加的时候,内容较多,一般两次之间应该是2分钟左右。
叶子 2008-04-03
  • 打赏
  • 举报
回复
两次操作的时间间隔 为一秒?
可能性应该不大吧?
zhengshuanger 2008-04-03
  • 打赏
  • 举报
回复
这样不行 的 说吧.,,,,,

如果两次操作的时间间隔 为一秒
到时候怎么往这两次操作的行之
间插入记录呢...
叶子 2008-04-03
  • 打赏
  • 举报
回复
updatetime 可以编辑 根据时间你可以定义位置。
settop 确定大的位置,settop=1一定在settop=0的上面
叶子 2008-04-03
  • 打赏
  • 举报
回复
order by settop desc,updatetime desc
叶子 2008-04-03
  • 打赏
  • 举报
回复
id name settop updatetime
1 A 0 年月日时分秒
2 B 0
3 C 0
4 D 0
5 E 0
6 F 0
7 G 0
8 H 0

settop是置顶的意思
设为1表置顶
0表示不置顶

zhengshuanger 2008-04-03
  • 打赏
  • 举报
回复
人为操作的...不会遇到变态吧..........
avrilxu 2008-04-03
  • 打赏
  • 举报
回复
人为操作的,应该没有那么大的数据量吧,这样子的算法,其实已经足够了
叶子 2008-04-03
  • 打赏
  • 举报
回复
我再想想
zhengshuanger 2008-04-03
  • 打赏
  • 举报
回复
谢谢 maco_wang

这种方法我记下了,,,,还有别的算法吗,,,
叶子 2008-04-03
  • 打赏
  • 举报
回复
1 A 100
7 X 200
2 B 300
3 C 400
4 D 500
5 E 600
6 F 700
如果把最好一个放到第二个位置
如下
1 A 100
6 F 150
7 X 200
2 B 300
3 C 400
4 D 500
5 E 600
---〉
1 A 100
5 E 125
6 F 150
7 X 200
2 B 300
3 C 400
4 D 500
---〉
1 A 100
4 D 113 -- ((100+125)/2向前取整)
5 E 125
6 F 150
7 X 200
2 B 300
3 C 400
---〉
1 A 100
3 C 107 -- ((100+113)/2向前取整)
4 D 113
5 E 125
6 F 150
7 X 200
2 B 300
如果你的数据量大,可以选500为单位







zhengshuanger 2008-04-03
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 maco_wang 的回复:]
如果对一个位置(除首尾外)来说,可以插约25次
[/Quote]


那这貌似是个严重的问题撒..
zhengshuanger 2008-04-03
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 avrilxu 的回复:]
引用 16 楼 zhengshuanger 的回复:
早上在坐车的时候..我在想.我们上学的时候.

排队做早操..我们也不知道我们在整个队伍里是排在第几位.但是我们清楚我们的前面一位是谁.后面一位是谁

那我在我的表里面添加一个字段..如sort.它记录的是.排在它前面的那条记录的ID..这样.所有记录都知道排在

它前面或它后面的是哪条记录了.如果要往里面插一条记录.重新排序.那只要更改两条记录的sort就可以了

id name …
[/Quote]

sort记录的是前面一位的ID.而不是位置的索引
叶子 2008-04-03
  • 打赏
  • 举报
回复
还是以100为单位的好
叶子 2008-04-03
  • 打赏
  • 举报
回复
如果对一个位置(除首尾外)来说,可以插约25次
zhengshuanger 2008-04-03
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 maco_wang 的回复:]
id name number
1 A 10
7 X 20
2 B 30
3 C 40
4 D 50
5 E 60
6 F 70
如果想把6放在第二个位置,
更改6的number为17即可
[/Quote]


id name number
1 A 10
6 F 17
7 X 20
2 B 30
3 C 40
4 D 50
5 E 60
8 K 70 / 80

那我插入第八条记录...number值 是 70 还是 80
不管是七十还是八十..我现在想把这条
记录.又排在第二..那.么


id name number
1 A 10
8 K ????
6 F 17
7 X 20
2 B 30
3 C 40
4 D 50
5 E 60


应该 是多少 ???
叶子 2008-04-03
  • 打赏
  • 举报
回复
如果数据量大的话,选择以100位单位,插值时尽量选择中间插入
加载更多回复(21)

62,247

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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