我的工作是什么,这是我需要改进的地方:
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中完成。
那我该怎么办呢: 插入form_data(id,data,email,name,surname等)选择[..],选择[..] ....
数据以最荒谬的方式存储在一个表IN ONE CELL中,其中一个不同的单元格告诉实际数据是什么:http://drp.ly/Jhx3J(屏幕截图)
请帮忙
答案 0 :(得分: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)的索引也会使此查询相当有效。
答案 1 :(得分: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)
;