Bu yazıda, OFSET ve FETCH cümlelerini inceliyoruz. OFFSET ve FETCH, bir dizi kayıt almak için bir araç sağlamak üzere SELECT deyimi ORDER BY deyimi ile birlikte kullanılır.Dönecek başlangıç ​​satırı, OFFSET değeri ve bu noktadan döndürülecek maksimum satır sayısı FETCH tarafından belirlenir.

Söz dizimi aşağıdaki gibidir.

ORDER BY column_list [ASC |DESC]

OFFSET offset_row_count {ROW | ROWS}

FETCH {FIRST | NEXT} fetch_row_count {ROW | ROWS} ONLY

Bu sözdiziminde:

  • OFFSETdeyimi, sorgudan satır döndürmeye başlamadan önce atlanacak satır sayısını belirtir.offset_row_count , sıfıra eşit veya daha büyük olan bir sabit, değişken veya parametre olabilir.
  • FETCHdeyimi, OFFSET deyimi işlendikten sonra döndürülecek satır sayısını belirtir.offset_row_count bire eşit veya daha büyük olan sabit, değişken veya skaler olabilir.
  • FETCH deyimi isteğe bağlı iken OFFSET deyimi zorunludur. Ayrıca, FIRST ve NEXT sırasıyla eşanlamlıdır, böylece bunları birbirlerinin yerine kullanabilirsiniz. Benzer şekilde, FIRSTve NEXT değişmeli olarak kullanabilirsiniz.

Aşağıdaki OFFSET ve FETCH yan tümcelerini gösterir:

Resim-1

OFFSET ve FETCH yan tümceleri ORDER BY yan tümcesi ile kullanmanız gerektiğini unutmayın. Aksi takdirde, bir hata alırsınız.

OFFSET ve FETCH yan tümceleri, sorgu sayfalama çözümünü TOP yan tümcesinden daha fazla uygulamak için tercih edilir.

SQL Server OFFSET ve FETCH örnekleri

Örnek tablodaki products tablosunu tanıtım için kullanacağız.

Resim-2

Aşağıdaki sorgu, products tablosundaki tüm ürünleri döndürür ve ürünleri liste fiyatlarına ve adlarına göre sıralar:

SELECT
product_name,    list_price FROM    production.products
ORDER BY
list_price,
product_name;

Resim-3

İlk 10 ürünü atlayıp geri kalanını iade etmek için, OFFSET yan tümcesini aşağıdaki ifadede gösterildiği gibi kullanırsınız:

SELECT
product_name,    list_price FROM    production.products
ORDER BY
list_price,
product_name
OFFSET 10 ROWS;

Resim-4

İlk 10 ürünü atlayıp sonraki 10 ürünü seçmek için, hem OFFSET hem de FETCH yan tümcelerini kullanın:

SELECT
product_name,    list_price FROM    production.products
ORDER BY
list_price,
product_name
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;

Resim-5

En pahalı 10 ürünü almak için hem OFFSET hem de FETCH cümlelerini kullanırsınız:

SELECT
product_name,    list_price FROM    production.products
ORDER BY
list_price DESC,
product_name
OFFSET 0 ROWS
FETCH FIRST 10 ROWS ONLY;

Resim-6

Bu örnekte, ORDER BY cümlesi, ürünleri azalan sırayla liste fiyatlarına göre sıralar. Ardından, OFFSET deyimi sıfır satırı atlar ve FETCH deyimi listedeki ilk 10 ürünü alır.

Bu öğreticide, SQL Server OFFSET FETCH cümlelerini nasıl kullanacağınızı öğrendiniz