我有一个查询,从大约五个表中选择所有表并将它们连接在一起。 问题是每个表都有两个列名,在所有表中都是相同的。我想选择所有数据,但我想把这两列作为一个不同于给它们的名称。
我的查询目前看起来像这样:
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
列名称为updated
和alreadyCorrect
。 更新指出信息已经过某种更新, AlreadyCorrect 表示发送更新时信息正确。
我可以这样做吗?
select updatedInfo.*,
nameInfo.*, nameInfo.updated as nameUpdated .....
那会有用吗?或者我是否必须列出桌面上的每一列?这是否会取消未重命名的列 AND 的别名?
答案 0 :(得分:2)
您的替代方法无效,因为您仍然会在其中包含旧列名称(因为您选择*)。结果你会得到"更新"专栏两次。一旦使用名称"更新"和#34; nameUpdated"。
唯一的解决方案是列出每一列,并在必要时为它们提供别名。
替代:
您可以创建一个临时/哈希表,在其中为列提供不同的名称,然后使用您问题中的选择来插入所有数据,最后您只需执行Select * from tempTable