select roleid,id, IF(@pre=roleid,@rownum:=@rownum+1,@rownum:=1) as rownum ,@pre:=roleid from ( select a.roleid, a.id from login a, (SELECT DISTINCT(roleid) from login where generatetime >= '2019-03-01' and generatetime<'2019-03-02') b where a.roleid=b.roleid GROUP BY a.roleid ,a.id order by a.id ) ret,(select @pre:='',@rownum:=0 ) numgen order by roleid