2013-10-15 30 views
0

我需要從兩個單獨的表中插入兩個值,並使用WHERE子句過濾其中一個值。 目前我使用:對兩個值使用INSERT INTO,對於只有一個的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

+0

你想在桌上看到什麼?針對他們訂購的產品的每封電子郵件列表?如果需要,你需要加入表格,但是我們需要查看錶格結構。 – ModulusJoe

+0

您正在使用誤導性術語。 「排序」通常是指以某種順序呈現數據。你想要的術語是「過濾」。 –

+0

理想情況下,我希望訂購產品並將用戶電子郵件排列在新表格中。現有的表都有一個共同的ID,但我不確定如何從連接中創建一個新表。 – redleaf

回答

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

+0

我試過這個,電子郵件仍然重複,產品不是。 – redleaf

+0

這兩個查詢都無法解決問題。第一個仍然有一個完整的外連接,因爲沒有指定連接字段。第二種假設兩個表具有相同的字段,這是不太可能的。 –

+0

@redleaf,看看我的編輯 –

1

您需要在其公共領域加入user_list和order_items! 現在,您正在將user_list中的每個條目與order_items中的每個條目組合在一起。

+0

一旦我們將你的聲望提高到50,你就可以將這樣的東西寫成評論。 –