2016-03-25 6 views
1

Рассмотрим следующий сценарий, чтобы создать структуру таблицы и данные выборкиВозвращение группы по значениям в MySql

CREATE TABLE TableA (
FieldA VARCHAR(30), 
FieldB VARCHAR(30), 
FieldX varchar(50) 
); 
Insert into TableA (FieldA,FieldB,FieldX) 
Values 
('Big','Red','Apple'), 
('Big','Red','Orangatang'), 
('Small','Red','Cherry'), 
('Small','Red','Ladybug') 

Если я запустить Select с группой по использовать, скажем FieldA, FieldB, как показано ниже

Select FieldA,FieldB from TableA group by FieldA,FieldB 

можно каким-то образом извлечь все значения FieldX из записей в каждой группе? В идеале я хочу выход, который имеет:

Big | Red | 'Apple','Orangatang' 
Small | Red | 'Cherry','Ladybug' 

SQLFiddle Demo

ответ

2

Вы можете использовать функцию MySQL group_concat, чтобы сделать это:

Select FieldA, FieldB, group_concat(fieldx) as concatenated_field 
from TableA 
group by FieldA, FieldB 
+0

Я продолжал получать такие значения, как «Ценность, ценность», где разделитель добавлен в конец, так что left ((Group_Concat (Zip, '|')), CHAR_LENGTH (Group_Concat (Zip, '|')) - 1) для его решения – user3649739

+0

@ user3649739 Я предполагаю, что неправильно понял, что вы хотели, чтобы результат выглядел. Счастлив, вам удалось это решить :) – jpw

2

group_concat должен сделать трюк:

SELECT fielda, fieldb, GROUP_CONCAT(fieldx) 
from  tablea 
GROUP BY fielda, fieldb 
+1

Какая абсолютно идеальная функция! – user3649739

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