T-SQL:查询带来太多的列
问题描述:
我已经运行了一个查询,似乎正在带回太多的列(是的,列,而不是行)。声明低于T-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声明中看到两个术语。
任何帮助,非常感谢。
答
这是旧式连接。
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
参考:(。*)
+0
我的天啊。谢谢你,我从来没有想过这件事。顺便说一下,我没有写这个SQL,我偶然发现它试图调和另一个系统的数字。是的,NOLOCK无处不在! –
+0
@FlexFiend乐于帮忙! – SqlZim
的点星级符号使用的是告诉T-SQL来显示给定表的所有列。所以TempLegs。*会为你提供你想要的单个列,但是“TMWStateMilesByLeg。*”也会给你这个表中的每一列(我不知道它是什么或者它是如何影响你的查询的) 。 – Stilgar