0

我需要从两个单独的表中插入两个值,并使用 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

4

2 回答 2

1

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

于 2013-10-15T22:13:37.517 回答
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

于 2013-10-15T22:11:06.257 回答