2012-11-28 21 views
2

我想知道是否有可能从别名2和独立的表2列同名。别名2列同名

例如,我想加入一个用户表和管理员表中的电子邮件表,让各自的“名称”列在同一列相结合。

Email Table: Email ID | Email Address 

User Table: Username| Email ID 

Admin Table: Username| Email ID 

Result: 

Username | Email Address 
+2

所以你希望这些列是分开的,但要有相同的名称,或者你想要它们完全合并以及? – RonaldBarzell

+0

@ user1161318完全合并,好像UNION是,我一直在寻找神奇的关键字。 – Klathmon

回答

2

我相信这是你想要得到什么:

SELECT a.Username, a.Email_ID, b.Email_Address 
FROM 
    (SELECT Username, Email_ID FROM User 
    UNION ALL 
    SELECT Username, Email_ID FROM Admin) a 
INNER JOIN Email b ON b.Email_ID = a.Email_ID 

这将堆叠UserAdmin表,然后JOINEmail表。

注意,如果有重复,你想删除它们,你应该使用的UNION代替UNION ALL

1

假设你的表有以下几列

Email: EmailId, EmailAddress 
User: UserName, EmailId 
Admin: UserName, EmailId 

那么下面工会应该让他们进入一个列表。注意我正在使用LEFT JOIN来允许用户或管理员表中的EmailId无效的情况

SELECT u.UserName, e.EmailAddress 
FROM USER u 
LEFT JOIN Email e ON e.Id = u.EmailId 

UNION 

SELECT a.UserName, e.EmailAddress 
FROM Admin u 
LEFT JOIN Email e ON e.Id = a.EmailId 
+0

矿和@ NJK的答案之间的区别是,我做的第一连接和工会的结果,而他的工会用户和管理员的表,然后再加入。它是有效的两种方式,但我怀疑他可能是更理想的 –

+0

从技术上讲,你执行这取决于记录的两个'JOIN's,可能需要更长的时间。 – Kermit

+0

这是一个非常简单的例子,所以我会在UNION读了,所以我可以做一个高效的查询 – Klathmon