MySql Get top n in each group -


i wrote query :

select title, userid, created_at, devicecode, streamtimeinsecond ( select title, userid, created_at, devicecode, streamtimeinsecond,           @userid_rank:=if(@current_userid = userid, @userid_rank + 1, 1) userid_rank,            @current_userid:=userid     viewforfirstfivemovies order userid, streamtimeinsecond desc ) ranked userid_rank<=5; 

in query trying 5 titles viewed each userid present in database. problem: getting more 5 records few users.

kindly me problem.

mysql not guarantee order of evaluation of expressions in select. reason, should set inter-related variables in single expression.

i write as:

select title, userid, created_at, devicecode, streamtimeinsecond (select title, userid, created_at, devicecode, streamtimeinsecond,               (@userid_rank := if(@current_userid = userid, @userid_rank + 1,                                   if(@current_userid := userid, 1, 1)                                  )                ) userid_rank,       viewforfirstfivemovies cross join            (select @current_userid := 0, @userid_rank := 0) params       order userid, streamtimeinsecond desc      ) ranked userid_rank <= 5; 

in addition, should set variables in same statement.


Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -

How to provide Authorization & Authentication using Asp.net, C#? -