主頁 > 知識(shí)庫 > Mysql利用group by分組排序

Mysql利用group by分組排序

熱門標(biāo)簽:鐵路電話系統(tǒng) AI電銷 百度競價(jià)排名 Linux服務(wù)器 呼叫中心市場需求 服務(wù)外包 地方門戶網(wǎng)站 網(wǎng)站排名優(yōu)化

昨天有個(gè)需求對(duì)數(shù)據(jù)庫的數(shù)據(jù)進(jìn)行去重排名,同一用戶去成績最高,時(shí)間最短,參與活動(dòng)最早的一條數(shù)據(jù)進(jìn)行排序。我們可以利用MySQL中的group by的特性。

MySQL的group by與Oracle有所不同,查詢得字段可以不用寫聚合函數(shù),查詢結(jié)果取得是每一組的第一行記錄。

利用上面的特點(diǎn),可以利用mysql實(shí)現(xiàn)一種獨(dú)特的排序;

首先先按某個(gè)字段進(jìn)行order by,然后把有順序的表進(jìn)行分組,這樣每組的成員都是有順序的,而mysql默認(rèn)取得分組的第一行。從而得到每組的最值。

select id, (@rowno := @rowno + 1) as rank,
 score,
 (C.end_time - C.start_time) as timeConsuming,
 start_time,
 real_name,
 tel,
 expiry_code
 from (SELECT *
  FROM (select *
   from t_q_order B
   where B.score > 0
   and B.tel IS NOT NULL
   order by B.score desc,
    (B.end_time - B.start_time) asc,
    B.start_time asc) as A
  group by A.tel
  ORDER BY A.score desc,
   (A.end_time - A.start_time) asc,
   A.start_time asc) 
 as C,
 (select @rowno := 0) t
 where (C.end_time - C.start_time) > 5 limit 0,50;

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Mysql中的排序規(guī)則utf8_unicode_ci、utf8_general_ci的區(qū)別總結(jié)
  • 讓MySQL支持中文排序的實(shí)現(xiàn)方法
  • mysql如何根據(jù)漢字首字母排序
  • Mysql row number()排序函數(shù)的用法和注意
  • Mysql select in 按id排序?qū)崿F(xiàn)方法
  • 兩種mysql對(duì)自增id重新從1排序的方法
  • 數(shù)據(jù)庫查詢排序使用隨機(jī)排序結(jié)果示例(Oracle/MySQL/MS SQL Server)
  • MySQL中按照多字段排序及問題解決
  • MySQL查詢優(yōu)化:連接查詢排序limit(join、order by、limit語句)介紹
  • MySQL中一些鮮為人知的排序方式

標(biāo)簽:黃山 蘭州 衡水 銅川 崇左 湖南 仙桃 湘潭

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Mysql利用group by分組排序》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266