mysql替换sql中rank函数_MySQL sql Rank()函数实现

一字符串类 Ø  Concat函数:连接字符串 Ø  Instr函数:返回字符串在某一个字段的内容中的位置, 没有找到字符串返回0,否则返回位置(从1开始) Ø  字符串大小写转换[upper()、ucase()和lower()、lcase()] upper()和ucase():把字符串中的小写转换成大写 lower

MySQL sql Rank()函数实现

两列数据,以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#以下两表作关联

(select a,b from your_table_name

group by a,b

order by a asc,b desc) tt,#一定要将同组的数据排序到一起,业务上是实际是以a作为分组,需要放前面;b业务上实际是作排序字段

(select @rank:=0,@rownum:=0,@temp:=null) ee

) result

having rank =1;

注意 :@temp:=tt.a, 字段顺序,之前将该字段放在最后,发现问题,应该缓存出现了问题,rank列表全部为1,在该SQL执行第二次的时候rank列表才显示正常。

试试这个:1.清空所有的元素(恢复主键id =1):truncate TABLE 2.更改主键自动更新值:ALTER TABLE 'table_name' AUTO_INCREMENT= 10000; 2015-12-2: 3.select 'abcdefg'  等价 select 0x41424344454647 通过hex() unhex()转换

SELECT * FROM (

SELECT * FROM posts ORDER BY dateline DESC

) GROUP BY  tid ORDER BY dateline DESC LIMIT 10

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值