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