2013-10-14 159 views
12

我在sql中有一個普遍的疑問。實際上「Top 1 1」會做什麼? 以下查詢的含義是什麼?SQL選擇查詢中Top 1 1和Select 1之間的差異

select top 1 1 from Worker W where not exists (select 1 from Manager M where M.Id = W.Id) 

sql server查詢中選擇「TOP 1 1」和「SELECT 1」之間的差異是什麼?

回答

7

SELECT TOP 1意味着選擇的結果,其中設置爲SELECT 1將在結果返回1非常一號記錄集

+3

感謝您的幫助。但是「Top 1 1」是什麼意思? – James

+0

SELECT TOP 1在查詢的結果集中選擇第一行,其他1將在管理器表中沒有相應記錄的任何記錄返回1 –

4

如果有至少一名工人(前1),沒有經理髮現請求。 SELECT 1子句充當「返回true」。

如果有管理器,請求select 1 from Manager M where M.Id = W.Id返回1.如果沒有管理器,請求返回NULL。

1

SELECT TOP 1 1會精確選擇0或1個1 s。 SELECT 1將選擇1剛好N行,其中N是符合條件的行數。

在你的情況下,它正在尋找第一個TOP 1)工人,沒有經理。然而,由於它是SELECT TOP 1 1,它所做的只是尋找沒有經理的工人的存在

7

下面,第一個「1」是「TOP 1」的一部分,意思是在達到單個結果後停止。第二個「1」只是因爲作者真的不在乎結果是什麼。

SELECT TOP 1 1 FROM WORKER 

是基本相同

SELECT TOP 1 * FROM WORKER 

唯一的問題是,它是否會更有效,在「存在」查詢的不僅僅是

SELECT 1 FROM Manager... 
1

其工作狀部分true false ... 例如 從ItemId = 4526000 的項目中選擇top 1 1它將返回1,因爲where condition是matchi NG。 如果它不匹配,則不會返回。 => 假設 從其中ItemId = 4526000 的項目中選擇top 10 1如果ItemId重複5次,它將返回1次5次。