Sql server T-SQL:查询返回的列太多

Sql server T-SQL:查询返回的列太多,sql-server,tsql,ansi-sql,Sql Server,Tsql,Ansi Sql,我遇到一个查询,它似乎返回了太多的列是的,是列,不是行。声明如下 Select TOP 10 PERCENT TempLegs.*, TMWStateMilesByLeg.* From ( Select TOP 10 TempOrigin.stp_city as 'Origin Location' from stops TempOrigin (NOLOCK) Union Select TOP 10

我遇到一个查询,它似乎返回了太多的列是的,是列,不是行。声明如下

Select TOP 10 PERCENT
       TempLegs.*,
       TMWStateMilesByLeg.*
From
(    
   Select  TOP 10
      TempOrigin.stp_city as 'Origin Location'
        from  stops TempOrigin (NOLOCK)
   Union
   Select  TOP 10
      TempOrigin2.stp_city as 'Origin Location'
        from  stops TempOrigin2 (NOLOCK)
) As TempLegs,TMWStateMilesByLeg
运行此语句时,结果集不是“Origin Location”的单个列,而是列出stops表中的所有列。这是怎么回事

我唯一能想到的是

作为模板,TMWStateMilesByLeg

语句对连接的两个部分都使用了别名,但我不确定,因为我从未在as语句中看到过两个术语


非常感谢您的帮助。

这是一种老式的加入方式

Select TOP 10 PERCENT /* <-- top without order by */
    TempLegs.*
       --,TMWStateMilesByLeg.* 
From (    
   Select  TOP 10 /* <-- top without order by */
      TempOrigin.stp_city as 'Origin Location'
        from  stops TempOrigin --(NOLOCK)
   Union /* <-- union instead of union all will return distinct results */
   Select  TOP 10 /* <-- top without order by */
      TempOrigin2.stp_city as 'Origin Location'
        from  stops TempOrigin2 --(NOLOCK)
  ) As TempLegs --,TMWStateMilesByLeg
参考:


天哪谢谢你,我永远也想不到。顺便说一句,我并没有编写这个SQL,我只是在尝试协调来自另一个系统的数字时偶然发现了它。是的,诺洛克无处不在@FlexFiend很乐意帮忙!您正在使用的点星*符号告诉T-SQL显示给定表的所有列。因此TempLegs.*将为您提供所需的单个列,但TMWStateMilesByLeg.*也将为您提供该表中的每一列,我不知道它是什么,也不知道它如何影响您的查询。