使用INSERT INTO有两个值,WHERE子句只有一个

时间:2013-10-15 22:09:06

标签: mysql sql

我需要从两个单独的表中插入两个值,并使用WHERE子句过滤其中一个值。 目前我正在使用:

INSERT INTO Combined_List (Email, Product)
SELECT meta_value, item_name FROM user_list, order_items 
WHERE meta_key LIKE '%user_email%'

meta_value包含各种信息,因此我尝试仅将user_email之类的条目过滤为meta_key。 问题是,当我运行此条目时,条目会重复数百次 我使用正确的语法仅过滤meta-key而非item_name吗?

2 个答案:

答案 0 :(得分:1)

您需要在其公共字段中加入user_list和order_items! 现在,您将user_list中的每个条目与order_items中的每个条目组合在一起。

答案 1 :(得分:0)

试试这个:

INSERT INTO Combined_List (Email, Product)
SELECT DISTINCT meta_value, item_name FROM user_list, order_items 
WHERE meta_key LIKE '%user_email%'

或者:

INSERT INTO Combined_List (Email, Product)
SELECT DISTINCT meta_value, item_name FROM user_list
WHERE meta_key LIKE '%user_email%'
UNION
SELECT DISTINCT meta_value, item_name FROM order_items 
WHERE meta_key LIKE '%user_email%'

编辑:

不知道你的结构,这是我能做的最好的

INSERT INTO Combined_List (Email, Product)
SELECT a.meta_value, b.item_name
FROM user_list a
JOIN order_items b ON a.meta_key = b.meta_key
where a.meta_key LIKE '%user_email%'

使用PK-FK关系代替a.meta_key = b.meta_key