Как мне обработать этот хитрый запрос MySQL [объединить на основе приоритета из той же таблицы]? - PullRequest
1 голос
/ 21 октября 2011

Прежде чем погрузиться в сценарий Python, чтобы сделать это для меня, мне интересно, сможем ли мы достичь этого только с помощью запроса MySQL?

У меня есть таблица с несколькими записями на один идентификатор.Я хочу объединить несколько значений в одну запись и объединить на основе приоритета?Все еще со мной?

Таблица может помочь:

ID Value Priority
1  AA    1
1  KK    3
1  CC    2 
2  AA    1
3  EE    4  
3  FF    5 
2  HH    6

Желаемый результат:

ID Concat_Value 
1  AA, CC, KK
2  AA, HH
3  EE, FF

Приоритет идет в порядке возрастания.Чем меньше число, тем выше приоритет.

1 Ответ

3 голосов
/ 21 октября 2011

Easy as pie.

SELECT id, GROUP_CONCAT(`value` ORDER BY priority) as concat_value
FROM table1
GROUP BY id

См .: http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

Если вам нужен пробел в group_concat, вам придется изменить разделитель:

SELECT 
  id
  , GROUP_CONCAT(`value` ORDER BY priority SEPARATOR ', ') as concat_value
FROM table1
GROUP BY id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...