У меня есть следующая таблица:Как преобразовать строки в столбцы без GROUP_CONCAT?
greeting: +-------------------------+ | id | lang_id | name | +-------------------------+ | 1 | 1 | 'Hello!' | | 1 | 2 | '¡Hola!' | | 1 | 3 | 'Salut!' | +----+---------+----------+
Мне нужно создать файл .CSV из него для последующей обработки:
greeting.csv: --------------------- id;en;es;fr 1;Hello!;¡Hola!;Salut! ---------------------
я могу выбрать все языки, как ряд с помощью GROUP_CONCAT
:
SELECT
id,
GROUP_CONCAT(name SEPARATOR ';') as 'name'
FROM
greeting
WHERE
greeting.id = 1;
Он выдает результат:
id | name ---+-------------------- 1 | Hello!;¡Hola!;Salut!
Однако для этого требуется специальная обработка столбца «name» в коде, поскольку перед тем, как я могу продолжить, я должен tokenize конкатенированную строку.
мне было интересно, если есть способ, чтобы получить результат, как это:
id | en | es | fr ---+--------+--------+------- 1 | Hello! | ¡Hola! | Salut!
Так что я могу обрабатывать столбцы единообразно.
Спасибо.
Благодарим вас за ответ. Я тоже пытался разрешить это с помощью объединений, но я получал все возможные комбинации языков и идентификаторов, потому что забыл указать часть 'AND t2.lang_id = 2'. Он выглядит более элегантным, чем 'MAX (CASE ...)', поэтому я отвечу на ваш ответ в качестве ответа. –