我有一个表格,其中包含填写表格的所有信息的庞大列表。每个表单条目都将所有信息放在同一列中,而field_id放在另一列中(这使我确切地知道了信息的输入位置)。因此,如果表单具有8个输入字段,则输入的所有信息都将在一列中,而与之对应的字段的field_id将在另一字段中。
我现在正在重建数据库,以使系统的混乱更加有用,但是我需要保留所有先前输入的数据。如何基于field_id列将新表中输入信息的8行中的信息组合在一起?
因此,如果名称/地址/电话/电子邮件/传真/母亲/父亲/宠物是新表的列,但是每个表的信息都存储在原始表的单个列中,而另一列的field_ids为1至8 ,我该怎么做呢?
编辑:更清晰
表1结构:
id / meta_value / field_id / entry_id / created_date
Table2结构:
身份证/姓名/地址/电话/电子邮件/传真/母亲/父亲/宠物
最佳答案
您可以使用MAX
和CASE
进行此操作。不知道您的表结构,我仅举一个例子:
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/