【发布时间】:2015-12-09 15:42:19
【问题描述】:
我有一个 mysql 表,其中填充了来自我网站上的网络表单的输入。该表单具有姓氏、姓氏、电子邮件、电话、地址等字段。当用户提交表单时,这些数据以一种相当奇怪的方式存储在 mysql 表中。 我的桌子是这样的:
subission# | value | field | tstamp | and |many |more |columns
=====================================================================================
1 |john@server.com |email |1448898875 | | | |
1 |john |firstname|1448898875 | | | |
1 |doe |lastname |1448898875 | | | |
1 |london |city |1448898875 | | | |
2 |jane@aol.com |email |1448898870 | | | |
2 |jane |firstname|1448898870 | | | |
2 |doe |lastname |1448898870 | | | |
2 |new york |city |1448898870 | | | |
3 |tim @aol.com |email |1448838571 | | | |
3 |tim |firstname|1448838571 | | | |
3 |smith |lastname |1448838571 | | | |
3 |paris |city |1448838571 | | | |
我需要将这些数据导出到 csv 文件,以便将其导入到其他服务器上的时事通讯脚本中,但服务器希望这些数据采用不同的格式:
submission#,email,firstname,lastname,tstamp,.....
1,john@server.com,john,doe,london,1448898875,,,,
2,jane@aol.com,jane,doe,1448898870,,,,
导出为csv不是问题,但是如何将一个提交#的所有数据都放在一行中?谁能指出我正确的方向,如何用 SQL 完成这个?
【问题讨论】:
-
如果我是你,我会使用字段值作为列而不是值。现在,您必须在要合并的所有行中至少有一个相同的值。我会说使用
timestamp不是很节省,因为如果添加两个用户添加相同的时间戳会发生什么? -
我认为
subission列可以达到这个目的,不幸的是,您必须将每个字段的表连接到自身一次才能使用 MySQL 获得所有结果。然后只需select ... into outfile...。