我想知道是否可以将 2 个单独表中的 2 列别名为同名。
例如,我想将电子邮件表与用户表和管理员表连接起来,并让各自的“名称”列组合在同一列中。
Email Table: Email ID | Email Address
User Table: Username| Email ID
Admin Table: Username| Email ID
Result:
Username | Email Address
我相信这就是你想要得到的:
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
这将堆叠User
和Admin
表,然后JOIN
是Email
表。
请注意,如果有重复项并且您想删除它们,您应该使用UNION
而不是UNION ALL
.
假设您的表具有以下列
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