SQL Veritabanı Tablosunda nth Satır
Nasıl Seçilir
Veri ile çalışırken, bir tablodaki belirli bir öğeyi seçmeniz gerekebilir; örneğin, nth satır
. Ancak, farklı veritabanlarının bunu başarmanın hafifçe farklı yolları vardır ve birden fazla SQL sistemi arasında bunu nasıl yapacağınızı öğrenmek son derece faydalı olabilir. Bu blog yazısında, hem veritabanından bağımsız yaklaşımları hem de SQL Server, MySQL, PostgreSQL, SQLite ve Oracle gibi popüler SQL veritabanları için belirli çözümleri keşfedeceğiz.
Veritabanından Bağımsız Yaklaşım
Her veritabanının özelliklerine girmeden önce, daha evrensel olarak düşünülebilecek bir yöntemle başlayalım. Bazı özellikler tüm SQL platformlarında desteklenmese de, nth satır
seçimini basitleştiren genel stratejiler vardır.
LIMIT ve OFFSET Kullanarak (PostgreSQL & MySQL)
PostgreSQL ve MySQL gibi veritabanları için aşağıdaki SQL sözdizimini kullanabilirsiniz:
SELECT ... LIMIT y OFFSET x
- LIMIT, almak istediğiniz satır sayısını belirler.
- OFFSET, satırları geri almaya hangi noktadan başlamak istediğinizi belirtir.
Örneğin, 10. satırı seçmek için şöyle yaparsınız:
SELECT * FROM tablename LIMIT 1 OFFSET 9;
Bu sözdizimi, verileri sayfalandırmak veya bizim durumumuzda belirli bir satırı almak için kullanışlıdır.
Belirli Veritabanı Çözümleri
SQL Server
SQL Server ile, özellikle SQL Server 2012’den önceki sürümlerde, benzer sonuçlar elde etmek için pencere işlevlerini kullanabilirsiniz. İşte yaygın bir örnek:
WITH Ordered AS (
SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS RowNumber, OrderID, OrderDate
FROM Orders
)
SELECT *
FROM Ordered
WHERE RowNumber = 1000000;
- ROW_NUMBER(), belirtilen sıraya göre sonuç kümesindeki satırlara artan bir numara oluşturur.
- Hangi satırı almak istediğinizi belirtmek için
WHERE RowNumber = 1000000
ifadesini düzenleyin.
PostgreSQL ve SQLite (Sürüm 3.25.0+)
PostgreSQL 8.4 itibarıyla, standart pencere işlevleri desteklenmektedir ve SQL Server’daki benzer bir yaklaşımı kullanmanıza olanak tanır:
SELECT * FROM (
SELECT ROW_NUMBER() OVER (ORDER BY key ASC) AS rownumber, columns
FROM tablename
) AS foo
WHERE rownumber <= n;
n
‘yi istenen satır numarasıyla değiştirin. Bu yapı, sürüm 3.25.0 itibarıyla SQLite’ta da etkili bir şekilde çalışacaktır.
Oracle ve DB2
Oracle ve DB2 için, pencere işlevlerini de desteklemektedir. Sözdizimi PostgreSQL ile benzerdir:
SELECT * FROM (
SELECT ROW_NUMBER() OVER (ORDER BY key ASC) AS rownumber, columns
FROM tablename
) AS foo
WHERE rownumber <= n;
ROW_NUMBER()
kullanımı, tanımladığınız sıraya göre belirli satırlara erişebilmenizi sağlar.
Sonuç
Bir SQL veritabanından nth satır
seçmek, kullanılan veritabanına bağlı olarak çeşitli yollarla yaklaşılabilen yaygın bir işlemdir. Farklı sözdizimlerini ve yöntemleri anlamak, farklı sistemler arasında daha etkili çalışmanıza olanak tanır. SQL Server, MySQL, PostgreSQL, SQLite veya Oracle’da sorgulama yaparken, şimdi ihtiyaç duyduğunuz belirli satırları alma araçlarına sahip olduğunuzu biliyorsunuz.
Daha fazla okumak için, SQL sorgulama teknikleri hakkında daha ayrıntılı bilgileri Troels Arvin’in web sitesinden her zaman kontrol edebilirsiniz. İyi sorgulamalar!