Hi!

>>>>> "Richard" == Richard Clarke <[EMAIL PROTECTED]> writes:

Richard> Because that wouldn't give the correct results.
Richard> I want the top 5 rows for EACH id.

Richard> A short example would be,

Richard> mytable:
Richard> Id    Val    Hits
Richard> 1     a       10
Richard> 1     b       15
Richard> 1     c       17
Richard> 2     q       200
Richard> 2     r       205
Richard> 2     s       101
Richard> 2     t       50
Richard> 3     zz      10
Richard> 3     yy      20
Richard> 3     xx      30
Richard> 3     ww      40
Richard> 3     uu      50

Richard> select max(2,hits) from mytable

Richard> Id
Richard> 1     b       15
Richard> 1     c       17
Richard> 2     q       200
Richard> 2     r       205
Richard> 3     ww      40
Richard> 3     uu      50

Richard> This is the top two rows for EACH id...

Richard> without this functionality i have to do

Richard> select distinct cid from mytable;
Richard> foreach(cid) {
Richard>     select * from mytable where cid='$cid' order by hits desc limit 2;
Richard> }

You may be able to use something like the following (not tested) trick
to do this:

SET @b=0;
SELECT *,(@a:= IF(@b=id,@a+1,1)) as cnt, @b:=id from mytable order by
id having cnt<5;

Regards,
Monty

-- 
For technical support contracts, goto https://order.mysql.com/
   __  ___     ___ ____  __
  /  |/  /_ __/ __/ __ \/ /    Mr. Michael Widenius <[EMAIL PROTECTED]>
 / /|_/ / // /\ \/ /_/ / /__   MySQL AB, CTO
/_/  /_/\_, /___/\___\_\___/   Helsinki, Finland
       <___/   www.mysql.com

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to