点按钮上移一位,该条就上移一位,点下移一位,该条就下移一位.就是一条条移动,比如我的淘宝里的自己的分类排序. 这个数据表怎么设计呢?

解决方案 »

  1.   

    专门设置一个字段记录显示时的位置,假设为 `pos` INT UNSINGED UNIQUE ,点上移一位或下移一位操作的时候,先判断要操作的记录在所有记录中所处的位置:如果是上移操作,判断当前记录前有没有记录(当前记录pos值>0则前面有记录,可以上移),这是交换两条记录pos字段的值,上一条+1,当前记录-1,由于设置了UNIQUE属性,交换这个值得时候可能需要一个先把上一条记录的pos值设置为一个确定不会用到的整数(比如999999999999);下移一位的时候操作类似,先判断当前记录是否是表中的最后一条记录,再...
    为了保证pos字段值的连贯性,删除一条记录的时候,应该把先删除当前记录,再把后面所有记录的pos值-1,插入新记录的时候,如果固定插入到最后(假设按pos值ASC排序),要先查询表中当前最大的pos值max(pos),再+1,如果需要指定位置也要更新后续记录的pos值...当然,你也可以把位置字段设置为允许插入重复值,根据pos值大小以及另外一个字段的组合来排序.