我刚刚阅读了一篇关于用户定义结果集排序的有趣博客文章。
一些应用程序,例如待办事项列表,需要维护用户定义的项目顺序。挑战在于顺序是任意的,并且可以在用户重新排列项目时更改
一个示例表可能是这样的:
create table items
(
itemid int primary key,
itemdata varchar(200),
...
...
userorder ???
);
使用可能的检索查询:
select * from items order by userorder asc;
鉴于我想将更新保持在最低限度,更新原子和检索查询尽可能简单和“高性能”,是否有任何方法可以考虑?
我最初的想法是使用一个额外的TIMESTAMP
列,并且只更新单行userorder
的值(检索查询使用ing by ),但是当您需要在具有相同值的其他两行之间移动一行时,这会失败.timestamp
ORDER
userorder asc, usertimestamp desc
没有考虑特定的数据库,因为我自己使用的范围很广。