从Table Set one列中选择all到AS的别名

时间:2017-08-24 13:15:50

标签: sql-server

我有一个查询,从大约五个表中选择所有表并将它们连接在一起。 问题是每个表都有两个列名,在所有表中都是相同的。我想选择所有数据,但我想把这两列作为一个不同于给它们的名称。

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

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更新指出信息已经过某种更新, AlreadyCorrect 表示发送更新时信息正确。

我可以这样做吗?

select updatedInfo.*,
       nameInfo.*, nameInfo.updated as nameUpdated .....
那会有用吗?或者我是否必须列出桌面上的每一列?这是否会取消未重命名的列 AND 的别名?

1 个答案:

答案 0 :(得分:2)

您的替代方法无效,因为您仍然会在其中包含旧列名称(因为您选择*)。结果你会得到"更新"专栏两次。一旦使用名称"更新"和#34; nameUpdated"。

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

替代: 您可以创建一个临时/哈希表,在其中为列提供不同的名称,然后使用您问题中的选择来插入所有数据,最后您只需执行Select * from tempTable