2017-10-09 45 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个以上的电子邮件。

相关问题