You are looking for a minimum value _within_ a maximum set. In this case, that will take two processing steps:
DECLARE TEMPORARY TABLE tmpScores SELECT classid, Max(score) as topscore FROM tablename_goes_here GROUP BY classid; SELECT t.classid, t.Min(studentid), ts.topscore FROM tablename_goes_here t INNER JOIN tmpScores ts ON ts.classid = t.classid AND ts.topscore = t.score GROUP BY t.classid, ts.topscore; DROP TABLE tmpScores; That should answer the question "For each class, what is the smallest student ID that scored highest for that class". You will need to replace "tablename_goes_here" with the actual name of your table. Shawn Green Database Administrator Unimin Corporation - Spruce Pine Haitao Jiang <[EMAIL PROTECTED]> wrote on 08/10/2004 02:24:29 AM: > Hi, > > If I want to find out highest score student from each class, how can I > do that in MySQL? Assume the table looks like: > > classId INT, > studentId INT, > score INT > > In the case of multiple students from the same class has the same > highest score, I would like to get the first one whose studentId is > the smallest. I tried to use sub-query, but in the case of students of > same highest score in the same class, they all get returned - I only > want one from each class. > > Is it possible? > > Thanks a lot > > HT > > -- > MySQL General Mailing List > For list archives: http://lists.mysql.com/mysql > To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED] >