Подтвердить что ты не робот

Как сгруппировать строки mysql с одинаковым значением столбца в одну строку?

У меня есть две таблицы, ключевые слова и данные.

Ключевые слова таблицы имеют 2 столбца (id, keyword), данные таблицы имеют 3 столбца (id [внешний ключ keywords.id], имя, значение).

Я использую этот запрос:

SELECT k.id, d.value, d.name
FROM keywords AS k
INNER JOIN data as d ON k.id = d.id

он возвращает что-то вроде:

1 123 name1
1 456 name2
2 943 name1
3 542 name1
3 532 name2
3 682 name3

Каждый идентификатор может иметь значения от 0 до 3 (возможно, больше в будущем).

Как я могу получить все строки с одним и тем же идентификатором в одной строке?

Как

1 123 456
2 943
3 542 532 682

Я хочу сделать это, потому что хочу иметь возможность сортировать значения.

4b9b3361

Ответ 1

Используйте GROUP_CONCAT() следующим образом:

 SELECT k.id, GROUP_CONCAT(d.value)
  FROM keywords AS k
  INNER JOIN data as d ON k.id = d.id
  GROUP BY k.id

Кроме того, вам может понадобиться ORDER BY d.name, чтобы получить точный порядок значений, как вы хотите. Вот так:

 SELECT k.id, GROUP_CONCAT(d.value ORDER BY d.name separator ' ')
  FROM keywords AS k
  INNER JOIN data as d ON k.id = d.id
  GROUP BY k.id