2017-08-24 45 views
0

我有一个查询从大约五个表中选择全部并将它们连接在一起。 问题是每个表都有两个在所有表中相同的列名。我想选择所有的数据,但我希望将这两列与其给予的名称联系起来。从表中选择全部将一列设置为别名使用AS

我的查询看起来像这样目前:

select updatedInfo.*, 
       nameInfo.*, 
       addressInfo.*, 
       phoneInfo.*, 
       emailInfo.*, 
       positionInfo.* 
       from updatedInfo join nameInfo on updatedInfo.IndivId=nameInfo.nameInfoId 
         join addressInfo on updatedInfo.IndivId=addressInfo.addressInfoId 
         join emailInfo on updatedInfo.IndivId=emailInfo.emailInfoId 
         join phoneInfo on updatedInfo.IndivId=phoneInfo.phoneInfoId 
         join positionInfo on updatedInfo.IndivId=positionInfo.IndivId 
         where updatedInfo.correctedInFNV is not null 
         order by updatedInfo.IndivId 

列名updatedalreadyCorrect更新注意到这些信息已经以某种方式更新了,并且已经更正表示发送更新时信息是正确的。

我可以这样做吗?

select updatedInfo.*, 
     nameInfo.*, nameInfo.updated as nameUpdated ..... 

会这样吗?或者我必须列出桌子上的每一列?这是否会将未更名的列作为别名?

+0

你真的应该无论如何,不​​要使用select *。你真的使用每个表中的每一列吗? –

+0

我确实使用每个表中的每一列。这是一个非常精简的模式。表格最多只有十列。 –

+0

所以要明确并命名列。这就是你应该如何编写所有查询的方式。如果你有10列,这意味着你的查询是60列。如果您更改模式,则返回的数据超出您的需要。 –

回答

2

您的替代方法无法正常工作,因为您仍然会使用旧的列名称(正如您使用*选择的那样)。结果你会有两次“更新”列。一次使用名称“更新”,一次使用“名称更新”。

唯一的解决方案是列出每一列,并在必要时给它们一个别名。

替代: 你可以创造一个你给你列一个不同名称的临时/哈希表,然后使用选择从你的问题中插入的所有数据,并在最后你只是做Select * from tempTable

+0

感谢您的支持,原创和别名都可以接受。感谢您的确认! –