2017-10-09 49 views
-1

如何搜索值e。 G。有不同列的幾個表中的電子郵件地址?或優化我的查詢?sql在不同的表格中查看兩個列表中的值

我的例子

$email = '[email protected]'; 

$email = "SELECT a.email_one, a.email_two,b.email_three 
FROM first_table AS a, second_table AS b 
WHERE a.email_one = $email OR b.email_two = $email"; 

謝謝!

+1

添加一些示例表格數據和預期結果 - 作爲格式化文本(不是圖像)。 – jarlh

+0

也許'UNION ALL'? – jarlh

+0

Sossy,我糾正了我的代碼。有了UNION,我需要有相同數量的列。我的查詢是不同的。 – Mark

回答

0

SELECT a.email_one, b.email_two FROM first_table AS a inner join second_table AS b ON a.email_one=b.email_two and a.email_one='".$email."'

1

如果它可以出現在兩個表,但兩個表之間沒有相關數據只使用兩個表

SELECT a.email, 'from-first-table' from first_table a where ... 
UNION 
SELECT b.email, 'from-second-table' from second_table b where ... 
0

它幾乎總是一個壞的架構設計,張開的查詢之間UNION數組(電子郵件,在你的情況)跨列。相反,在一個額外的表中使用多行:

SELECT ... 
    FROM Main 
    JOIN Emails USING(user_id) 
    WHERE Emails.email = '$email'; 

Emails: INDEX(email, user_id) 

非常有效;允許每個用戶使用0,1,2或2個以上的電子郵件。

相關問題