Mysql数据库实现的简单置顶

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql数据库实现的简单置顶相关的知识,希望对你有一定的参考价值。

Mysql数据库实现的简单置顶

1. 问题背景:小编要做一个文章管理的简单网页,用的是mysql数据库。其中需要文章置顶功能,如图:

技术分享

2. 最初的思路:机智的小编立刻大脑飞速运转,很快想到为存储文章的"article"表设定一个(int)型的"isTop"属性,0表示不置顶,大于0表示置顶且数字越大,优先级越高。显示的时候只需按照"isTop"降序显示。当用户需要将"id"为"001"的文章置顶时,后台只需获得所有文章"isTop"字段的最大值,并将其(+1)后赋值给"id"为"001"的文章的"isTop",就能保证置顶操作后的文章优先级最高。

3. 有瑕疵的实现:有了思路之后,小编立刻编写代码。主要还是sql语句,如下:

 

update article set isTop=((select Max(isTop) from article)+1) where id=?;

 

用了一个子查询,个人觉得没毛病,可是报错了

 

技术分享

查了一下原来是Mysql的不支持先select再update同一个表。

4. 最终实现:小编在网上多方参考和尝试之后,发现解决办法。可以将article的数据取出来当作一个临时表,再在临时表中查询Max(isTop),就没有问题了。sql语句如下:

 

update article set isTop=((select Max(isTop) from (select * from article)as x)+1) where id=?;

 

5. 参考链接:http://www.jquerycn.cn/a_14968

以上是关于Mysql数据库实现的简单置顶的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 上移/下移/置顶

ThinkPHP有啥优越性?如何使用?另外在PHP+MySQL中如何实现置顶、收索、转跳到指定第几页的功能。

java连接mysql简单实现

mysql批量更新数据,即:循环select记录然后更新某一字段

Mysql数据库AB复制简单实现

jsp+servlet+mysql 实现简单的银行登录转账功能