Как объединить строки в таблице mysql - PullRequest
0 голосов
/ 28 мая 2020

У меня есть таблица, в которой каждая строка содержит температуру и погодные условия, например:

temp  condition
17    cloudy
25    sunny
22    cloudy
41    sunny
12    showers
38    sunny

У меня ограничено пространство для хранения, поэтому я хотел уменьшить размер этой таблицы. Как я могу объединить одни и те же погодные условия в одну строку, где в столбце температуры есть разные температуры с помощью разделителя, такого как «|»?

После объединения таблица будет выглядеть так:

temp       condition
17|22      cloudy
25|41|38   sunny
12         showers

Я изменил тип данных временного столбца на varchar, чтобы он мог хранить новый формат, но не уверен, как теперь объединить строки.

Я хочу перезаписать эту таблицу с новым форматом как в отличие от простого объединения в запросе выбора. Это поможет уменьшить размер файла и ускорить выполнение запросов. Если это невозможно сделать непосредственно на mysql (phpmyadmin), я бы предпочел сделать это с помощью сценария PHP.

1 Ответ

0 голосов
/ 28 мая 2020

Вы можете использовать group_concat() для генерации результатов:

select
    group_concat(temp delimiter '|') temp,
    condition
from mytable
group by condition

Что касается перезаписи таблицы, вам нужно будет выполнить несколько шагов:

  • создать новую таблицу для хранения результатов запроса

  • заполнить ее указанным выше запросом

  • удалить исходную таблицу

  • переименуйте новую таблицу в исходное имя

Я бы не рекомендовал идти в этом направлении. Небольшой выигрыш в пространстве, который вы получите, будет подавлен недостатками, которые подразумевает хранение данных в виде списков с разделителями. Я бы порекомендовал следующее чтение: Действительно ли хранить список с разделителями в столбце базы данных так плохо? и хорошая вторая мысль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...