sql在不同表中的两个列中查找值

时间:2017-10-09 09:11:02

标签: mysql sql mariadb

如何搜索值e。 G。具有不同列的几个表中的电子邮件地址?或优化我的查询?

我的例子

$email = 'some_email@example.com';

$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";

谢谢!

3 个答案:

答案 0 :(得分:1)

如果它可以出现在两个表中,但两个表之间没有相关数据,只需在两个表的查询之间使用UNION

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

答案 1 :(得分: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."'

答案 2 :(得分:0)

在列之间展示数组(在您的情况下是电子邮件)几乎总是一个糟糕的架构设计。而是在额外的表中使用多行:

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

Emails:  INDEX(email, user_id)

效率很高;每个用户允许0,1,2或2个以上的电子邮件。