mysql数据库的实现_Mysql数据库实现的简单置顶

Mysql数据库实现的简单置顶

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

060b985bec99d8cf2e272e37988af108.png

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=?;

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

1d45ee7d52ac82c86185911ba9e4494d.png

查了一下原来是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

原文:http://www.cnblogs.com/RottenOrange/p/6031789.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值