如何合并mysql表中的行

w3nuxt5m  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(178)

我有一个表格,每行包含一个温度和天气状况,例如:

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

我的储藏空间有限,所以我想缩小这张table的尺寸。如何将相同的天气条件合并到一行中,其中“温度”列使用分隔符(如“|”)具有不同的温度?
一旦合并,表将如下所示:

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

我已将temp列的数据类型更改为varchar,以允许它存储新格式,但不确定现在如何合并行。
我想用新的格式覆盖这个表,而不是仅仅在select查询中组合它。这将有助于降低文件大小并加快运行查询的速度。如果这不能直接在mysql(phpmyadmin)上完成,那么我更愿意通过php脚本来完成。

jfewjypa

jfewjypa1#

你可以用 group_concat() 要生成结果:

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

至于覆盖表,您需要分几个步骤进行:
创建一个新表来存储查询结果
用上面的查询输入它
删除原始表
将新表重命名为原始名称
我不建议你朝这个方向走。您将获得的微小空间增益将被按分隔列表存储数据的缺点所淹没。我建议阅读以下内容:在数据库列中存储带分隔符的列表真的有那么糟糕吗?再仔细想想。

相关问题