对表数据进行(置顶,上移,下移,置底操作)---数据库sql

来源:互联网 发布:网络运营商密码是什么 编辑:程序博客网 时间:2024/05/16 06:39

这两天一直在做社区论坛的帖子的(置顶,上移,下移,置底操作),下面是个人心得:


-- 上一条:select * from 表 where 数据id<@当前显示数据id order by 数据_id asc) limit 1-- 下一条:select * from 表 where 数据id>@当前显示数据id order by 数据_id desc) limit 1 --  给新查询出来的结果添加新的编号SELECT @row := @row +1 AS ROW ,bestTopic.id,bestTopic.cover,bestTopic.title,bestTopic.orders,bestTopic.topic_id,bestTopic.is_pub,bestTopic.create_date,bestTopic.modify_datefrom qbao_bbs_best_topic bestTopic, (  SELECT @row :=0 )r where 1=1ORDER BY orders desc-- 最大编号SELECT IFNULL(orders,0) from qbao_bbs_best_topic ORDER BY orders desc limit 1;-- 最小编号SELECT orders from qbao_bbs_best_topic ORDER BY orders asc limit 1;-- 下一条SELECT IFNULL(orders,0) from (SELECT @row := @row +1 AS ROW ,id,ordersfrom qbao_bbs_best_topic, (  SELECT @row :=0 )r ORDER BY orders desc) bestTopicwhere ROW<1ORDER BY ROW DESC limit 1;-- 上一条SELECT orders from (SELECT @row := @row +1 AS ROW ,id,ordersfrom qbao_bbs_best_topic, (  SELECT @row :=0 )r ORDER BY orders desc) bestTopicwhere ROW>1 ORDER BY ROW ASC limit 1;-- 数据前提1)数据存在字段(orders),每次新增,编号默认(最大值+1)2)数据编号,会存在相同编号,以及负数编号3)置顶,置底,操作针对所有记录,(所有页面,不是单个页面)-- 操作需求置顶,上一条,下一条,置底-- 规则1)置顶操作 ,被操作记录 编号是置顶帖子(编号+1);2)置底操作 ,被操作记录 编号是置底帖子(编号-1);3)上一条记录,被操作记录,与上一条记录比较:1.如果编号不同,互相调换位置;2.如果编号相同,上一条操作记录(编号-1);4)下一条记录,被操作记录,与下一条记录比较:1.如果编号不同,互相调换位置;2.如果编号相同,下一条操作记录,(编号+1);


0 0
原创粉丝点击