我有两个表,我正在加入以下查询......
select *
from Partners p
inner join OrganizationMembers om on p.ParID = om.OrganizationId
where om.EmailAddress = 'my_email@address.com'
and om.deleted = 0
哪个效果很好,但Partners
中的一些列我希望被OrganizationMembers
中类似命名的列替换。我想在连接表中替换的列数非常少,不应超过3个。
通过在结果连接中有选择地选择我想要的列,可以得到我想要的结果......
select om.MemberID,
p.ParID,
p.Levelz,
p.encryptedSecureToken,
p.PartnerGroupName,
om.EmailAddress,
om.FirstName,
om.LastName
from Partners p
inner join OrganizationMembers om on p.ParID = om.OrganizationId
where om.EmailAddress = 'my_email@address.com'
and om.deleted = 0
但这会创建一个很长的select p.a, p.b, p.c, p.d, ... etc ...
序列,我试图避免这种情况。
总之,我试图从Partners
表中获取多个列,从OrganizationMembers
表中获取最多3列,而在查询开头没有长列规范序列。是可能还是我只是在做梦?
答案 0 :(得分:3)
select om.MemberID as mem
使用AS关键字。这称为别名。
答案 1 :(得分:2)
试试这个:
p.*,
om.EmailAddress,
om.FirstName,
om.LastName
你永远不应该使用*
。始终指定实际需要的列可以更容易地找出发生的情况。
答案 2 :(得分:2)
你正在实施你的梦想。
此外,作为最佳做法,选择*是DBA通常不赞成的事情。
如果你想限制结果或改变任何东西,你必须明确地命名结果,作为一个潜在的“止差距你可以做这样的事情。”
SELECT p.*, om.MemberId, etc..
但是,如果您想要第一个表中的所有列,然后选择所选项,则此仅适用。
答案 3 :(得分:2)
但这会产生很长的序列 select p.a,p.b,p.c,p.d,...等 ......我想避免的。
不要避免它。拥抱它!
有很多理由说明为什么最好的做法是明确列出所需的列。
任何使用查询的东西都必须列出所有列,所以对它懒惰没有意义!