Grouping by Column with Dependence on another Column

Here is a simplified look at the problem I am trying to cleanly solve via a MySQL query. This is not the actual table I am dealing with.

If I have the following table:

Name Buyer ID  
John Fred  4  
John Smith 3  
Fred Sally 2  
John Kelly 1

I would like a query to return the following:

Name Buyer ID      
John Fred  4  
Fred Sally 2  

Such that we group by ‘name’ and show the latest row / buyer / ID.

I tried to implement this by performing a nested select statement, wherein I first performed “ORDER BY ID DESC” then, on the outermost SELECT, “GROUP BY NAME”. And, while this is a roundabout way of solving the problem, it seemed that, by virtue of the ordering, the correct selection would be returned to me. Unfortunately, “GROUP BY” does not ‘guarantee’ that the ‘Buyer’ column will contain the expected entry.

Any helpful suggests for implementing this as a query? At the moment, I have a highly-inefficient PHP ‘version’ of the query running on a large table dump – definitely not the best choice.

Leave a Reply


Hire Me
Follow Me!
Most Popular Articles & Pages
Because your vote is Important
Sorry, there are no polls available at the moment.