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
时间: 2024-12-24 09:23:56