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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM