繁体   English   中英

如何合并 mysql 表中的行

[英]How to merge rows in a mysql table

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

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

我已将 temp 列的数据类型更改为 varchar 以允许它存储新格式,但不确定现在如何合并行。

我想用新格式覆盖这个表,而不是仅仅在 select 查询中组合它。 这将有助于减小文件大小并加快查询运行速度。 如果这不能直接在 mysql (phpmyadmin) 上完成,那么我更愿意通过 PHP 脚本来完成。

您可以使用group_concat()生成结果:

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

至于覆盖表格,您需要分几个步骤进行:

  • 创建一个新表来存储查询结果

  • 用上面的查询喂它

  • 删除原始表

  • 将新表重命名为原始名称

我实际上不建议朝这个方向发展。 您将获得的微小空间增益将被将数据存储为分隔列表所暗示的缺点所淹没。 我建议阅读以下内容:在数据库列中存储分隔列表真的那么糟糕吗? , 和一个很好的第二个想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM