Dan wrote:
I have a regular query lets say:

Better to show the real query, rather than a simplified version. Simplified requests get you simplified answers. What seems like a simplification to you, may in fact hide a crucial piece of information, thus preventing anyone from giving you a solution to your real problem. We need the real query to give a real answer.

SELECT user, points FROM results ORDER BY points DESC

so I get:

user    points
---------------
john    23
steve   17
bill    14

From this I want to get a particular users 'rank' or row number from the query. I was hoping for a single line elegant query for this.

I thought of this:

SET @i = O;
SELECT @i:= @i + 1 as row, SUM(IF(user = 'steve',@i,0)) as rank, user FROM points ORDER BY points DESC GROUP BY id;

That's not your real query, as the table name seems to have changed from "results" to "points".

but I get:

rank    user
---------------
0    john
2    steve
0    bill

I don't think so. Your select has a column named row, but it's missing in your output.

From your description of the problem, I cannot tell why you made the second query so complicated. What is wrong with the following, simpler query?

  SET @i = 0;

  SELECT @i:= @i + 1 AS rank, user
  FROM results
  ORDER BY points DESC;

It should give

  rank    user
  ---------------
  1       john
  2       steve
  3       bill

as the results.  Isn't that what you want?

which does not really help me

Any ideas?  I tried the manual, Google and the list with no sucsess.

Thanks,

Dan T

If you show us what you want, instead of something that isn't what you want, someone may be able to tell you how to get it.

Michael


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to