Ü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.
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;