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