Without using a subquery, you have to do it in two steps. First you need 
to collect the MAX(col2) values for each  col1 value:

CREATE TEMPORARY TABLE tmpMaxes
SELECT col1, max(col2)
from test_table
GROUP BY col1

Then you want to get the rows where the col2 value is the maximum for each 
col1 value (as we determined in the last query):

SELECT tt.col1, tt.col2, tt.col3
FROM test_table tt
INNER JOIN tmpMaxes tm
        ON tm.col1 = tt.col1
        AND tm.col2 = tt.col2

Finally, you should always clean up after yourself:

DROP TABLE tmpMaxes

Make sense?

Yours,
Shawn Green
Database Administrator
Unimin Corporation - Spruce Pine

[EMAIL PROTECTED] wrote on 07/28/2004 12:29:26 PM:

> Hi,
> I'm using MySQL 4.0.18 on Win2k Server.  I have a table similar to the 
> following:
> 
> col1    col2    col3
> ----------------
> A       1       this
> A       2       is
> A       3       a
> B       1       test
> B       2       table
> 
> 
> What I would like to get with one query is the following result:
> 
> col1    max(col2)       col3
> ----------------------
> A       3               a
> B       2               table
> 
> 
> I've searched around, but haven't been able to come up with anything. 
This 
> query doesn't give me the correct results:
> select col1, max(col2), col3 from table group by col1
> 
> 
> Any suggestions?
> 
> Thanks in advance,
> Matt

Reply via email to