TOP (Transact-SQL)
Określa, że tylko pierwszego zestaw wierszy będą zwracane z wyniku kwerendy.Zestaw wierszy może być liczbą lub procent wierszy.TOP wyrażenie można używać w instrukcji SELECT, INSERT, UPDATE, korespondencji SERYJNEJ i DELETE.
[
TOP (expression) [PERCENT]
[ WITH TIES ]
]
Argumenty
expression
Is the numeric expression that specifies the number of rows to be returned.expression is implicitly converted to a float value if PERCENT is specified; otherwise, it is converted to bigint.Nawiasy ograniczających expression w TOP jest wymagana w instrukcji INSERT, UPDATE, korespondencji SERYJNEJ i DELETE. W celu zapewnienia zgodności z poprzednimi wersjami TOP expression bez nawiasów w SELECT instrukcji jest obsługiwana, ale firma Microsoft nie zaleca tego.
Jeśli kwerenda zawiera klauzula ORDER BY, pierwszy expression wiersze, lub expression procent wierszy, uporządkowane według klauzula ORDER BY są zwracane. Jeśli kwerenda ma nie klauzula ORDER BY, kolejność wierszy jest dowolnego.
PROCENT
Wskazuje, czy kwerenda zwraca tylko pierwszą expression procent wierszy zestaw wyników.Z POWIĄZAŃ
Określa, że dodatkowe wiersze były zwracane z podstawowego zestaw o tej samej wartości w kolumnach wyświetlane ostatnio TOP w ORDER BY wyników n Wiersze (PERCENT). TOP... WITH TIES może być określony tylko w instrukcji SELECT i tylko wtedy, gdy ORDER BY klauzula została określona.Uwaga
The returned order of tying records is arbitrary.ORDER BY does not affect this rule.
Remarks
TOP nie mogą być używane razem z aktualizacji i usuwania instrukcje na temat widoków podzielonym na partycje.
Wiersze, do którego odwołuje się wyrażenie TOP używane INSERT, UPDATE, korespondencji SERYJNEJ lub DELETE nie są rozmieszczone w dowolnej kolejności.U GÓRY n Zwraca n losowe wiersze. Na przykład następujące INSERT Instrukcja zawiera ORDER BY Klauzula, a jeszcze tę klauzulę nie wpływa na wiersze, które odwołują się bezpośrednio INSERT Instrukcja.
INSERT TOP (2) INTO Table2 (ColumnB)
SELECT ColumnA FROM Table1
ORDER BY ColumnA;
The ORDER BY klauzula in the previous query references only the rows that are returned by the nested SELECT instrukcja. The INSERT instrukcja chooses any two rows returned by the SELECT instrukcja. Aby upewnić się, że u góry dwa wiersze z SELECT dodaje się podkwerenda, nowa napisać kwerendę w następujący sposób.
INSERT INTO Table2 (ColumnB)
SELECT TOP (2) ColumnA FROM Table1
ORDER BY ColumnA;
SQL Server Umożliwia aktualizowanie widoków, które zostały utworzone za pomocą klauzula TOP.Ponieważ klauzulę TOP jest uwzględniony w definicji widoku, niektóre wiersze może zniknąć z widoku ze względu na aktualizację, jeśli wynik nie jest już spełnia wymagania TOP wyrażenie.Aby uzyskać więcej informacji zobaczModifying Data Through a View.
W wyrażeniu TOP w kwerendzie nie wpływa na instrukcje, które mogą zostać wykonane z powodu uruchomienia wyzwalacza.Tabele wstawione i zaktualizowane w wyzwalacze zostaną wyświetlone tylko te wiersze, które rzeczywiście dotyczy instrukcji INSERT, UPDATE, korespondencji SERYJNEJ lub DELETE.
Za pomocą TOP w instrukcja korespondencji SERYJNEJ
Gdy określona w instrukcja korespondencji SERYJNEJ, klauzula TOP jest stosowane po tabela całą źródłową i połączonych w tabela miejsce docelowe całego i sprzężonych wiersze, które nie kwalifikują się do wstawiania, aktualizacji lub usuwania akcja zostaną usunięte.Dalsze klauzula TOP zmniejsza liczbę wierszy sprzężonych określona wartość i wstawiania, aktualizacji lub usuwania akcji są stosowane do pozostałych połączonych wierszy w sposób nieuporządkowana.Oznacza to nie istnieje żadne zlecenia, w którym umieszczone są wiersze akcji, zdefiniowanych w klauzulach podczas.Na przykład, określając TOP (10) ma wpływ na 10 wierszy; tych wierszy, 7 może zostać zaktualizowany i dodaje 3, albo 1 może być usunięty 5, zaktualizowane oraz 4 wstawione i tak dalej.
Ponieważ instrukcja korespondencji SERYJNEJ wykonuje skanowanie pełne tabela źródłowej i miejsce docelowe tabel, wydajność wejścia/wyjścia mogą mieć wpływ podczas modyfikowania tabela dużych tworząc wiele instancji przy użyciu klauzula TOP.W tym scenariuszu, ważne jest upewnić się, że wszystkie kolejne instancje miejsce docelowe nowe wiersze.Aby uzyskać więcej informacji zobaczOptimizing MERGE Statement Performance.
Przykłady
A.Korzystanie ze zmiennych TOP
W poniższym przykładzie użyto zmiennej uzyskiwania pierwszego 10 pracownicy, które są wymienione w dbo.Employee spis AdventureWorks Baza danych.
B.Za pomocą TOP PERCENT i WITH TIES
Poniższy przykład pobiera u góry 10 procent wszystkich pracowników z najwyższym wynagrodzenia i zwraca je w malejącej kolejności zgodnie z kursem podstawy wynagrodzenia. Określanie WITH TIES sprawdza, czy że wszystkich pracowników, których wynagrodzenia równa najniższej wynagrodzenia, zwracane znajdują się również zestaw wyników, nawet jeśli w ten sposób przekracza 10 procent pracowników.