mysql替换sql中rank函数_MySQL sql Rank()函数实现
一字符串類 ?? Concat函數(shù):連接字符串 ?? Instr函數(shù):返回字符串在某一個字段的內(nèi)容中的位置, 沒有找到字符串返回0,否則返回位置(從1開始) ?? 字符串大小寫轉(zhuǎn)換[upper()、ucase()和lower()、lcase()] upper()和ucase():把字符串中的小寫轉(zhuǎn)換成大寫 lower
MySQL sql Rank()函數(shù)實現(xiàn)
兩列數(shù)據(jù),以a列作為分組,查找以b列倒序的第一個。
select a,b,rownum,rank from
(select
tt.a,
tt.b,
@rownum:=@rownum+1 rownum,#@rownum變量加1,作為rownumber,
if(@temp=tt.a,@rank:=@rank+1,@rank:=1) as rank,#tt.a字段等于@temp變量,則@rank加1,否則@rank賦值為1
@temp:=tt.a#將tt.a字段賦予@temp變量 注意該字段賦值順序,先賦值,再自加減
FROM#以下兩表作關(guān)聯(lián)
(select a,b from your_table_name
group by a,b
order by a asc,b desc) tt,#一定要將同組的數(shù)據(jù)排序到一起,業(yè)務(wù)上是實際是以a作為分組,需要放前面;b業(yè)務(wù)上實際是作排序字段
(select @rank:=0,@rownum:=0,@temp:=null) ee
) result
having rank =1;
注意 :@temp:=tt.a, 字段順序,之前將該字段放在最后,發(fā)現(xiàn)問題,應(yīng)該緩存出現(xiàn)了問題,rank列表全部為1,在該SQL執(zhí)行第二次的時候rank列表才顯示正常。
試試這個:1.清空所有的元素(恢復(fù)主鍵id =1):truncate TABLE 2.更改主鍵自動更新值:ALTER TABLE 'table_name' AUTO_INCREMENT= 10000; 2015-12-2: 3.select 'abcdefg' ?等價 select 0x41424344454647 通過hex() unhex()轉(zhuǎn)換
SELECT * FROM (
SELECT * FROM posts ORDER BY dateline DESC
) GROUP BY ?tid ORDER BY dateline DESC LIMIT 10
總結(jié)
以上是生活随笔為你收集整理的mysql替换sql中rank函数_MySQL sql Rank()函数实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java学习指导————如何做到基础扎实
- 下一篇: MySQL 基础 ———— SQL语句的