2016-01-09 6 views
1

Предположим, у нас есть таблица, подобная приведенной ниже.Ограничить результаты MySQL одному из каждой «группы»

Id | Name | Group 
----------------- 
1 | John | 1 
2 | Zayn | 2 
3 | Four | 2 
4 | Ben_ | 3 
5 | Joe_ | 2 
6 | Anna | 1 

Следующий запрос выберет все из них.

SELECT `Name` FROM `Table` WHERE 1; 

Как выбрать одного человека из каждой группы? Кто это не имеет значения, если существует только одно имя из группы 1 и одно имя из группы 2 и т. Д.

Предложение GROUP BY не подходит для этого (в соответствии с моей консолью ошибок), потому что я выбор не агрегированных значений, что имеет смысл.

Предложение DISTINCT тоже не очень хорошо, так как я не хочу выбирать группу, и определенно не группу по их именам.

ответ

0

Если не важно, полученное имя можно anawy левередж некоторые групповые функции, например, с макс или мин ..

левереджа группа функций

select max(name) from your_table 
    group by Group; 

в противном случае вы можете использовать подзапрос

select name from your_table 
where Id in (select min(Id) from your_table group by Group); 
+0

Он должен выбрать «Имя» из каждой «Группы», возвращая что-то вроде «Джон, Зайн и Бен». – Lolums

+0

John - это максимальная группа форм 1, Zayn - максимальная группа форм 2, а Ben max для группы 3 ... кажется мне прав. – scaisEdge

+0

Вы правы, это действительно работает. Я создал скрипт SQL, чтобы проверить его. (Http://sqlfiddle.com/#!9/c272c/3) – Lolums

Смежные вопросы