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 个值。
我不擅长 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 个值。