How to select the first row for each group in MySQL? How to select the first row for each group in MySQL? mysql mysql

How to select the first row for each group in MySQL?


I based my answer on the title of your post only, as I don't know C# and didn't understand the given query. But in MySQL I suggest you try subselects. First get a set of primary keys of interesting columns then select data from those rows:

SELECT somecolumn, anothercolumn   FROM sometable  WHERE id IN (               SELECT min(id)                  FROM sometable                 GROUP BY somecolumn             );


When I write

SELECT AnotherColumnFROM TableGROUP BY SomeColumn;

It works. IIRC in other RDBMS such statement is impossible, because a column that doesn't belongs to the grouping key is being referenced without any sort of aggregation.

This "quirk" behaves very closely to what I want. So I used it to get the result I wanted:

SELECT * FROM ( SELECT * FROM `table` ORDER BY AnotherColumn) t1GROUP BY SomeColumn;


Here's another way you could try, that doesn't need that ID field.

select some_column, min(another_column)  from i_have_a_table group by some_column

Still I agree with lfagundes that you should add some primary key ..

Also beware that by doing this, you cannot (easily) get at the other values is the same row as the resulting some_colum, another_column pair! You'd need lfagundes apprach and a PK to do that!