别名2列为同一名称

时间:2012-11-28 00:18:33

标签: mysql join alias

我想知道是否可以将2个独立表中的2列别名为同名。

例如,我想加入一个包含用户表和管理表的电子邮件表,并将相应的“名称”列合并到同一列中。

Email Table: Email ID | Email Address

User Table: Username| Email ID

Admin Table: Username| Email ID

Result:

Username | Email Address

2 个答案:

答案 0 :(得分: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表,然后JOIN Email表。

请注意,如果有重复项并且您要删除它们,则应使用UNION代替UNION ALL

答案 1 :(得分:1)

假设您的表格包含以下列

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

然后以下联合应该将它们放入一个列表中。注意我使用LEFT JOIN来允许User或Admin表中的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