MYSQL - 如何从两个表中查找结果?

MYSQL - How to find result from two tables?

我不擅长 mysql 所以需要知道如何从两个 table 中找到结果。

假设我有两个 tables:

品牌table:

Id  Email           Password
--  -----           --------
1   kris@gmail.com  12345678

Facebook table:

Id  Email               Password
--  -----               --------
1   calbares@gmail.com  12345678

现在我想从 table 中找到此电子邮件地址 calbares@gmail.com 并希望从结果中获取电子邮件和密码。

知道怎么做吗?

谢谢。

要做到这一点,请试试这个

Select * from Brand where Email = '$email';

UNION ALL

Select * from Facebook where Email = '$email';
SELECT * FROM brand_table
union
select * from facebook_table

UNION 将带来不同的记录。

如果你使用union all,它也会带来重复。

你的情况:

SELECT * FROM brand_table where email ='calbares@gmail.com'
union all
select * from facebook_table where email ='calbares@gmail.com'

为了更实际的使用,您可以为电子邮件使用一个变量:

SET @email='calbares@gmail.com'

SELECT 'Brand' AS Platform, Email, Password
FROM Brand WHERE Email=@email

UNION ALL

SELECT 'Facebook', Email, Password
FROM Facebook WHERE Email=@email

或创建 function/procedure:

CREATE PROCEDURE find_Passwords(IN emailin varchar(255))
BEGIN
SELECT 'Brand' AS Platform, Email, Password
    FROM Brand WHERE Email=emailin

    UNION ALL

    SELECT 'Facebook', Email, Password
    FROM Facebook WHERE Email=emailin
END

您可以通过以下方式调用:

CALL find_Passwords('calbares@gmail.com')

两个 table 中的电子邮件地址相同?

如果是,请使用此命令:

"SELECT brand.password AS brand_pw, facebbok.password AS fb_password FROM brand JOIN facebook ON facebook.email = 'calbares@gmail.com' WHERE brand.email = 'calbares@gmail.com'"

因此您应该得到两个值:brand_pw 和 fb_password。因为您知道电子邮件,所以无需从 table.

中收集它

但如果您也想收到电子邮件,只需在 SELECT 之后添加以下内容:brand.email AS brand_mail、facebook.email AS fb_email

所以完整的命令应该是这样的:

"SELECT brand.password AS brand_pw, brand.email AS brand_mail, facebook.email AS fb_email, facebbok.password AS fb_password FROM brand JOIN facebook ON facebook.email = 'calbares@gmail.com' WHERE brand.email = 'calbares@gmail.com'"

所以你得到 4 个值。