T-SQL:查询带来了太多列

时间:2017-05-23 18:20:45

标签: 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
      TempOrigin2.stp_city as 'Origin Location'
        from  stops TempOrigin2 (NOLOCK)
) As TempLegs,TMWStateMilesByLeg

当我运行此语句时,我的结果集不是“原点位置”的单个列,而是列出了停靠表中的所有列。这里发生了什么?

我唯一能想到的是

  

作为TempLegs,TMWStateMilesByLeg

语句对连接的两个部分进行别名,但我不确定,因为我从未在AS语句中看到过两个术语。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

这是旧式连接。

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

参考: