我有表T_USER,有字段 id , name , sort_order
其中id是主键 , sort_order是用来排序的现在有两个功能
1, 添加USER时,可以直接将USER插到固定位置,比如,第一位, 第二位等等,在页面输出
2,在显示列表页面,可以操作将制定USER插入到某一行。要求
1,或者使用SQL语句实现
或者使用java代码实现
2,在满足第一条要求的基础上:
推荐不使用更新所有sort_order字段
我的思路不通,请指出错误点:(mybatis)
1,查询sort_order中的最大值,然后+1,反转排序,可置顶
2,如果有sort_order字段值分别为 2 , 3 ,我想将其插入到第3位,此sort_order怎么实现??求教。。先感谢了!
其中id是主键 , sort_order是用来排序的现在有两个功能
1, 添加USER时,可以直接将USER插到固定位置,比如,第一位, 第二位等等,在页面输出
2,在显示列表页面,可以操作将制定USER插入到某一行。要求
1,或者使用SQL语句实现
或者使用java代码实现
2,在满足第一条要求的基础上:
推荐不使用更新所有sort_order字段
我的思路不通,请指出错误点:(mybatis)
1,查询sort_order中的最大值,然后+1,反转排序,可置顶
2,如果有sort_order字段值分别为 2 , 3 ,我想将其插入到第3位,此sort_order怎么实现??求教。。先感谢了!
解决方案 »
- mysql 存储过程 alter table传参数问题
- Postgresql存储过程问题(关于变量表名)
- winform连接MySql查询条件中包含中文为什么查不到值??
- 一条update语句
- MYSQL服务器连结
- 有人用过mysql触发器吗,怎么查看数据库中有哪些表创建了触发器,分别是哪些,怎么修改和删除呢?
- 请问怎样用ASP连接Mysql数据库,急!
- mysql工具打开数据库可看到2个内容一个是tables,另一个是udfs,udfs是什么意思
- 菜鸟求助Mysql的C++接口问题
- mysql ibdata1文件被污染or损坏,ib_logfile1,iblogfile2删除。怎么恢复数据库
- varchar(255) vs varchar(256)
- 不安装sql server 或者mysql、,只靠windows 默认的ODBC能否驱动excel表或者是access表?
其实也是更新sort_order,只不过不是全部更新。
比如已经存在2,3了,现在新增加一条数据显示在第3位,此时是否可以将已经存在的3更新位最大值。那么问题来了,原来的3此时就会排在最后一位了,关键是这点符合你要求么。
如果符合的话,可以将sort_order添加唯一索引,这样更新能够更快。
比如已经存在1,2,3,4,5条记录。
现在新增一条要求显示在第3位,此时sort_order的值为2.1
现在又新增一条要求显示在第4位,此时sor_order的值设置为2.2
现在又新增一条要求显示在第4位,此时sort_order值设置为2.1.1
现在一共有8条记录了,直接order by sort_order,顺序如下:
1
2
2.1
2.1.1
2.2
3
4
5
这种方法唯一的弊端在于计算新插入记录的sort_order的值,不过这个都可以用程序计算出来。
仅供参考,如果有更好的方法可以分享一下
SQL语句能order by这个吗?
当已经存在了2和2.1,
要在这两个数字中间插入记录该怎么办?算了,你这个需求太奇怪了,现在只能想到通过update已经存在的记录来实现。
只是要求用sort_order字段来实现置顶和指定插入某行的功能就行了,并能在页面显示就行了
具体用什么,怎么用无所谓了
只是求个行的通的方法。。