将多行作为mysql中的单行复制到另一个表中

时间:2014-02-24 01:07:08

标签: php mysql sql ubuntu

我一直在寻找这个问题的答案而无法找到一个

我在LAMP堆栈上使用带有Drupal的sql

首先,如果这在cron工作中更好,请告诉我

我的问题

我有一个必须使用的表单模块。它保存了以下数据:

ID, element_id, group_id, element_value
1            0         1           Name
2            1         1        Address
3            2         1            DOB    etc...

我希望能够获取元素值并将它们放入另一个表中的1行

所以我目前

INSERT INTO new_table (name, street_address,street_address_line_2, city, state, zip,
                       country, dob)
SELECT element_value 
FROM submited_table
WHERE group_id = 'some_group_id'

我很困惑如何将不同的值放在同一行中以制作单个记录。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

实现此目的的一种方法是通过聚合:

INSERT INTO new_table (name, address, dob)
    SELECT max(case when element_id = 1 then element_value end) as name,
           max(case when element_id = 2 then element_value end) as address,
           max(case when element_id = 3 then element_value end) as DOB,
           . . .
    FROM submited_table
    WHERE group_id = 'some_group_id';

这假设element_id正在识别第一个表中的每一行所指的内容。它还假定每个元素值对应于目标表中的一列。