問題描述:
現有**t1,t1中有checkdoctor(檢查人員)字段,無count(匯**計)和rank(排名字段),現要求在指定條件下獲取各個檢查人員的工作量排名,允許並列排名。由於使用mysql資料庫,沒有rank函式可使用,該如何實現呢?
解決思路:
在mysql中,可借助rownum實現查詢排名的功能,
說明:在msql中可使用@rownum宣告變數,使用:=賦值,詳見下面的描述
@rownum := @rownum + 1 中 := 是賦值的作用,這句話的意思是先執行@rownum + 1,然後把值賦給@rownum;
(select @rownum := 0) r 這句話的意思是設定rownum欄位的初始值為0,即編號從1開始
實現**:
select @rownum:=@rownum+1 as rownum,if(@total = cnt ,@rank ,@rank :=@rownum) as rank ,
@total := cnt as total, der.* from
(select ssuppliercode,checkdoctor,count(*) as cnt from t1 where ssuppliercode='01'
group by checkdoctor order by cnt desc
) as der,(select @rank := 0 ,@rownum := 0 ,@total := null) as t;
mysql中的查詢結果:
) as der,(select @rank := 0 ,@rownum := 0 ,@total := null) as t) as a where a.checkdoctor='李四';
查詢結果如下:
在實現過程中,受到博友的啟發在此表示感謝!
MySQL對資料表已有表進行分割槽表
對現有的乙個表進行建立分割槽表,並把資料遷移到新錶,可以按時間來分割槽,然後這錶不是實時更新,每天有一次插入操作。時間比較充裕,但是伺服器上有其他應用,使用較小資源為主要方式。1 可以使用alter table來進行更改表為分割槽表,這個操作會建立乙個分割槽表,然後自動進行資料copy然後刪除原表,...
django刪除資料表以及對資料表進行改動更新
實在是氣的不行,被坑的太難受了,為了防止有人繼續走彎路,我來寫這篇文章了。本人屬於大學需要做專案,自己摸索著使用django,所以最開始django的資料庫就是個老大難的問題,當我生成的資料表我想刪除時,我去網上查了很多解答,那些辦法不僅複雜的不行,還無數次的把我的資料庫整崩,然後我就不斷的重新建新...
MySQL對資料表已有表進行分割槽表的實現
目錄 對現有的乙個表進行建立分割槽表,並把資料遷移到新錶,可以按時間來分割槽,然後這錶不是實時更新,每天有一次插入操作。時間比較充裕,但是伺服器上有其他應用,使用較小資源為主要方式。1 可以使用alter table來進行更改表為分割槽表,這個操作會建立乙個分割槽表,然後自動進行資料copy然後刪除...