0

我有什么工作,这是我需要改进的:

INSERT form_data (id,data_id, email) 
SELECT '',fk_form_joiner_id AS data_id
     , value             AS email 
  FROM wp_contactform_submit_data 
 WHERE form_key='your-email'

这只是收到电子邮件,现在这很好,但还不够,因为我有几个不同的 form_key 值需要导入到不同的列中,我知道我可以通过 php 使用 foreach 循环和更新来做到这一点,但这需要纯粹在mysql中完成。

那么我该怎么做:insert form_data(id,data,email,name,surname,etc) Select [..],Select [..]....

数据以最荒谬的方式存储在一个表格中,在一个单元格中,另一个单元格告诉实际数据是什么: http: //drp.ly/Jhx3J(屏幕截图)

请帮忙

4

2 回答 2

0

这不是问题,您只需要多次加入 wp_contactform_submit_data (每个值一个):

INSERT INTO form_data (data_id, email, name)
SELECT fk_form_joiner_id as data_id, email, name
FROM (SELECT fk_form_joiner_id, value as email
      FROM wp_contactform_submit_data
      WHERE form_key='your-email'
      ) as emails
JOIN (SELECT fk_form_joiner_id, value as name
      FROM wp_contactform_submit_data
      WHERE form_key='your-name') as names
  USING (fk_form_joiner_id)
;
于 2010-04-02T10:06:11.273 回答
0

在您的问题中,您想要的其他数据的存储位置并不明显,但也许您正在寻找一些东西,如下所示:

INSERT form_data (id,data_id, email,city) 
SELECT A.fk_form_joiner_id AS data_id
     , A.value             AS email 
     ,B.value               AS city
  FROM wp_contactform_submit_data A,
       wp_contactform_submit_data B
  WHERE A.form_key='your-email' AND 
        B.form_key='your-city' and
        A.fk_form_joiner_id=B.fk_form_joiner_id

可以扩展此逻辑以非常轻松地处理少量的多个字段 - 如果有时缺少一个或多个数据值,您将不得不在 A 和 B 之间进行外部连接以获取所有记录。

显然,您必须为每一列创建一个新的连接,但这无论如何都是以某种形式完成您的任务所必需的。

wp_contactform_submit_data(fk_form_joiner_id,form_key) 上的索引也将使此查询相当有效。

于 2010-04-01T12:18:21.900 回答