0
我有一個使用子查詢來查詢數據子集的查詢,然後我試圖從子查詢中選擇特定的數據。子查詢:針對子查詢的查詢產生與單獨運行子查詢不同的結果
select top 10 Build_ID, Appscan_Definitive_High,
rank() over (order by Appscan_Definitive_High desc) as rankpct
from
(
select build_id, convert(int,appscan_definitive_high) as
appscan_definitive_high
from dbo.SDFBuildMetrics
where coalesce(appscan_definitive_high,0)>0
) a
,並從該結果是:
Build_ID Appscan_Definitive_High rankpct
31966 51 1
32627 51 1
44293 51 1
47011 51 1
47968 51 1
48554 51 1
25586 49 7
27370 49 7
40357 48 9
23867 44 10
但是當我運行兌子查詢的查詢:
select Appscan_Definitive_High
from
(
select top 10 Build_ID, Appscan_Definitive_High,
rank() over (order by Appscan_Definitive_High desc) as rankpct
from
(
select build_id, convert(int,appscan_definitive_high) as
appscan_definitive_high
from dbo.SDFBuildMetrics
where coalesce(appscan_definitive_high,0)>0
) a
) aa
我得到:
Appscan_Definitive_High
1
44
21
44
2
44
2
6
7
7
完整查詢的最終目的是r etrieve min(AppScan_Definitive_High),但由於返回的值集合與子查詢返回的值集合不匹配,min函數並不能提供我需要的值。我假設子查詢返回外部查詢操作的一組數據,但在上例中似乎不是這種情況。
對此有何幫助?
呵呵。 a)我不認爲你可以通過子查詢指定順序,b)我不確定我明白爲什麼這很重要。如果子查詢返回如第一個示例中所示的一組數據,那麼外部查詢操作的是什麼?它的工作原理,但我不完全確定爲什麼... – 2015-02-10 15:28:24
你可以(也可能應該)始終用頂部指定順序。如果你不是SQL Server可以跳過的東西,或者例如並行性會導致不同類型的結果。實際執行計劃可能會揭示爲什麼發生這種情況 – 2015-02-10 15:44:26