我有一个表格,其中包含填写表格的所有信息的庞大列表。每个表单条目都将所有信息放在同一列中,而field_id放在另一列中(这使我确切地知道了信息的输入位置)。因此,如果表单具有8个输入字段,则输入的所有信息都将在一列中,而与之对应的字段的field_id将在另一字段中。

我现在正在重建数据库,以使系统的混乱更加有用,但是我需要保留所有先前输入的数据。如何基于field_id列将新表中输入信息的8行中的信息组合在一起?

因此,如果名称/地址/电话/电子邮件/传真/母亲/父亲/宠物是新表的列,但是每个表的信息都存储在原始表的单个列中,而另一列的field_ids为1至8 ,我该怎么做呢?

编辑:更清晰

表1结构:
id / meta_value / field_id / entry_id / created_date

Table2结构:
身份证/姓名/地址/电话/电子邮件/传真/母亲/父亲/宠物

最佳答案

您可以使用MAXCASE进行此操作。不知道您的表结构,我仅举一个例子:

SELECT id,
   MAX(CASE WHEN field_id = 1 THEN meta_value END) 'Name',
   MAX(CASE WHEN field_id = 2 THEN meta_value END) 'Address',
   MAX(CASE WHEN field_id = 3 THEN meta_value END) 'Phone',
   ...
FROM YourTable
GROUP BY id


这会将您的结果PIVOT分成多列的一行。

关于mysql - MySQL-如何将一个表中不同行的信息合并到另一表中的一行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16842668/

10-11 22:35
查看更多