Share via


ÜST (Transact-SQL)

Yalnızca ilk küme , satırları sorgu sonuç döndürüleceğini belirtir.küme , satır, bir sayı veya satırları yüzdesi olabilir.select, INSERT, update, birleştirme ve delete deyimlerinde üst ifade kullanılabilir.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

[ 
     TOP (expression) [PERCENT]
     [ WITH TIES ]
]

Bağımsız değişkenler

  • expression
    Döndürülecek satır sayısını belirten sayısal ifade edilir.expressionörtülü olarak dönüştürülür bir float değeri ise yüzde belirtilir; Aksi halde, onu dönüştürülür bigint.

    Sınırlandıran parantez expression üst içinde gerekli INSERT, update, birleştirme ve delete deyimlerini.Geriye dönük uyumluluk için top expression select parantez olmadan deyimleri desteklenir, ancak bu önerilmez.

    Sorgu içerip içermediğini bir order by yan tümce, ilk expression satır veya expression order by yan tümce tarafından sipariş satırları yüzdesi döndürülür.Sorgu yok order by yan tümcevarsa, satırların isteğe bağlıdır.

  • YÜZDE
    Sorgu yalnızca ilk verdiğini gösterir expression sonuç kümesisatırları yüzdesi.

  • WITH TIES
    Temel sonuç kümesi üst son görünmesini order by sütunları aynı değer ile gelen ek satır döndürülmesini belirtir n (yüzde) satırları.ÜST...WITH TIES, yalnızca select deyimi içinde belirtilen ve bir order by yan tümce belirtilirse, yalnızca olabilir.

    Not

    Döndürülen bağlanmasıyla kayıtların rasgele sıradır.ORDER BYBu kural etkilemez.

Açıklamalar

ÜST, update ve delete deyimlerinde bölümlendirilmiş görünümlerde ile birlikte kullanılamaz.

INSERT, update, birleştirme veya silme kullanılan üst ifade içinde başvurulan satır herhangi bir sırayla düzenlenmiş değil.ÜST n verir n rastgele satır.Örneğin, aşağıdaki INSERT deyim içeren ORDER BY yan tümceve henüz bu yan tümce tarafından doğrudan başvurulan satırlarını etkilemez INSERT deyim.

INSERT TOP (2) INTO Table2 (ColumnB) 
    SELECT ColumnA FROM Table1 
    ORDER BY ColumnA;

ORDER BYyan tümce önceki sorguda döndürülen satır başvuruları ile iç içe SELECTdeyim. INSERTdeyim tarafından döndürülen herhangi iki satır seçer SELECTdeyim. En iyi iki gelen satırları emin olmak için SELECT alt sorgu eklenir, sorgu gibi yeniden yazabilir.

INSERT INTO Table2 (ColumnB) 
    SELECT TOP (2) ColumnA FROM Table1 
    ORDER BY ColumnA;

SQL ServerÜST yan tümceile oluşturulan görünümleri güncelleştirmek için izin verir.ÜST yan tümce görünüm tanımına dahil olduğundan, sonuç artık üst ifadegereksinimlerini karşılıyorsa belirli satırları görünümden bir güncelleştirme nedeniyle kaybolabilir.Daha fazla bilgi için, bkz. Bir görünüm üzerinden veri değiştirme.

Sorguda ifade üst tetikleyici harekete nedeniyle yürütülen deyimleri etkilemez.Tetikleyiciler eklenen ve güncelleştirilen tablolarda INSERT, update, birleştirme veya delete deyimleri tarafından etkilenen gerçekten satırları gösterir.

ÜST birleştirme deyimini kullanarak

Ne zaman birleştirme deyimiçinde belirtilen tüm kaynaktablo sonra üst yan tümce uygulanır ve tüm hedeftablo alanına bağlı ve INSERT, geçerli olmayan birleştirilmiş satır güncelleştirme veya eylem silme kaldırılmıştır. ÜST yan tümce daha belirtilen değere birleştirilen satır sayısını azaltır ve INSERT, update veya delete eylemleri sýralanmamýþ bir biçimde birleştirilen kalan satırlara uygulanır.Diğer bir deyişle, hiç sipariş satırları içinde OLDUĞUNDA yan tümcelerini tanımlanan eylemler arasında dağıtılır vardır.Örneğin, üst (10) belirterek, 10 satır etkiler; Bu satır 7 güncelleştirilebilir ve 3 eklenen veya 1 silinebilir, güncelleştirilmiş ve 4 5 eklenen ve benzeri.

Tam tablo tarama kaynak ve hedef Tabloları birleştirme deyim gerçekleştirdiği için birden çok toplu işlemi oluşturarak büyük bir tablo değiştirmek için üst yan tümce kullanarak g/Ç performansı etkilenebilir.Bu senaryoda, emin olmak önemlidir tüm ardışık toplu hedef yeni satırlar.Daha fazla bilgi için, bkz. BİRLEŞTİRME deyimini performansını en iyi duruma getirme.

Örnekler

A.ÜST ile değişkenlerini kullanma

Aşağıdaki örnek, ilk elde etmek için bir değişken kullanır 10 listelenen çalışanlar dbo.Employee tablo AdventureWorks2008R2 veritabanı.

USE AdventureWorks2008R2;
GO
DECLARE @p AS int;
SELECT @p=10
SELECT TOP(@p)*
FROM HumanResources.Employee;
GO

B.ÜST yüzde ile TIES kullanma

Aşağıdaki örnekte üst alır 10 en yüksek maaş ve azalan sipariş uyarınca maaş verir tüm çalışanların yüzde taban fiyatı.Belirtme WITH TIES emin olduğunu tüm çalışanların maaşlarını iade en düşük maaş eşit olması de yer sonuç kümesiyapar, bunu yaparken bile aşan 10 yüzde çalışanlar.

USE AdventureWorks2008R2;
GO
SELECT TOP(10) PERCENT WITH TIES
pp.FirstName, pp.LastName, e.JobTitle, e.Gender, r.Rate
FROM Person.Person AS pp 
    INNER JOIN HumanResources.Employee AS e
        ON pp.BusinessEntityID = e.BusinessEntityID
    INNER JOIN HumanResources.EmployeePayHistory AS r
        ON r.BusinessEntityID = e.BusinessEntityID
ORDER BY Rate DESC;