【问题标题】:TSQL select all columns from join with same namesTSQL从连接中选择所有具有相同名称的列
【发布时间】:2014-10-26 21:43:29
【问题描述】:

如果我有疑问

select * into #tmp1 from dbo.t1  inner join dbo.t2  on t1.Sender_Id=t2.Id

我收到一个错误

Column names in each table must be unique. Column name 'Id' in table '#tmp1' is specified more than once.

我怎样才能不求助于同样的事情

select t1.Id as t1id, t1.col2. ... t1.col30, t2.Id as t2id, ... t2.col40 as t2col40 from ...

符号。

我只需要快速手动检查几个表,所以我想要一种快速检查连接的方法。

【问题讨论】:

  • 不幸的是,如果有重复的列,您需要在使用SELECT * INTO时解决这个问题
  • 如前所述。你不能。您将需要指定列名并确保它们是唯一的。但是,而不是使用'SELECT * INTO'。您可以事先显式创建表(使用唯一的列名)并改为执行“INSERT INTO”。这允许您仍然使用 SELECT *。

标签: tsql join


【解决方案1】:

如果您必须通过select * into #tmp 保存结果或想要创建视图,则每个字段名称都必须是唯一的,并且您必须为具有相同名称的字段使用别名。
一个简单的查询不需要唯一的名称。

【讨论】:

    【解决方案2】:

    是的,列名在 select 语句中必须是唯一的,在您的情况下,例如,您有两个 (02) id,一个来自 tbl1,另一个来自 tbl2,在解决方案中将它们列为:

    Select t1.id, t2.id From tbl1 as t1 Inner Join tbl2 as t2 on t1.id = t2.id

    希望对您有所帮助。

    【讨论】:

      【解决方案3】:

      或者,如果您在两个表中都有同名的列,请使用:

      Select t1.*, t2.* From tbl1 as t1 Inner join tbl2 as t2 On t1.id = t2.id
      

      问候

      【讨论】:

        猜你喜欢
        • 2019-11-11
        • 2023-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多