Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Membatasi Baris dalam Kumpulan Hasil SQL Server

Masalah:

Anda ingin membatasi baris dalam kumpulan hasil SQL Server.

Contoh:

Basis data kami memiliki tabel bernama toy dengan data pada kolom id , name , dan price .

id nama harga
161 Sepeda BMX 200.00
121 Robot Tobie 185,50
213 Permainan memancing 25.00
102 Teka-teki Hewan 45,80
111 Set Lintasan Balap 126,70
233 Bata Ringan 21.00

Mari kita pilih nama dan harga mainan. Tapi kita hanya perlu melihat lima baris pertama.

Solusi 1:

SELECT name, price
FROM toy
ORDER BY price
OFFSET 0 ROWS FETCH FIRST 5 ROWS ONLY;

Berikut hasil querynya:

nama harga
Bata Ringan 21.00
Permainan memancing 25.00
Teka-teki Hewan 45,80
Set Lintasan Balap 126,70
Robot Tobie 185,50

Diskusi:

Untuk membatasi baris dalam kumpulan hasil, gunakan ORDER BY dengan klausa OFFSET dan FETCH opsional. Pertama, kueri mengurutkan baris (ORDER BY). Anda kemudian memberi tahu SQL Server mana yang harus menjadi baris pertama dalam kumpulan hasil (OFFSET...ROWS) dan berapa banyak baris yang akan dikembalikan (FETCH...ONLY).

Klausa OFFSET ditempatkan segera setelah ORDER BY. Bilangan bulat menunjukkan baris pertama yang akan dihitung (dalam SQL Server, baris pertama adalah 0, baris kedua adalah 1, dst.), diikuti dengan kata kunci ROW atau ROWS. Anda dapat menggunakan ROW atau ROWS, tetapi disarankan untuk menggunakan ROW untuk 1 baris dan ROWS untuk 0 dan beberapa baris. Lihat gambarnya:

Dalam contoh kami, kami mengurutkan berdasarkan harga (ORDER BY price ) dan mulai mengembalikan hasil dari baris pertama (OFFSET 0 ROWS ). Kemudian kita menggunakan FETCH dengan kata kunci FIRST. Anda dapat menggunakan FIRST atau NEXT; disarankan untuk menggunakan FIRST jika Anda memulai dari baris pertama tanpa menghilangkan catatan apa pun dan NEXT jika ada baris yang dihilangkan (yaitu jika OFFSET lebih besar dari 0).

Akhirnya, kami memiliki jumlah baris untuk dipilih dan kata kunci HANYA BARIS. Gunakan ROWS ONLY jika Anda mengembalikan beberapa baris dan ROW ONLY Anda membatasi hasilnya menjadi satu baris. Dalam contoh kami, kami membatasinya hingga lima baris (FETCH FIRST 5 ROWS ONLY ).

Di bawah, kami memiliki kueri lain yang membatasi baris hingga lima tetapi dimulai dari baris kelima dalam tabel (OFFSET 4 ROWS ):

Solusi 2:

SELECT name, price
FROM toy
ORDER BY price
OFFSET 4 ROWS FETCH NEXT 5 ROWS ONLY;

Berikut hasil querynya:

nama harga
Robot Tobie 185,50
Sepeda BMX 200.00

Perhatikan bahwa kueri ini hanya mengembalikan dua baris, bukan lima yang ditunjukkan. Lihat gambarnya:

Kenapa hanya dua baris? Karena tabel ini hanya berisi enam record. Jika kita menghilangkan empat baris pertama dan memulai dari baris 5, hanya tersisa dua baris.

SQL Server memiliki cara lain untuk membatasi baris:klausa TOP.

Solusi 3:

SELECT TOP 3
 name, price
FROM toy
ORDER BY price;

Berikut hasil querynya:

nama harga
Bata Ringan 21.00
Permainan memancing 25.00
Teka-teki Hewan 45,80

Jika Anda tidak perlu menghilangkan baris apa pun, Anda dapat menggunakan klausa TOP SQL Server untuk membatasi baris yang dikembalikan. Itu ditempatkan segera setelah SELECT. Kata kunci TOP diikuti oleh bilangan bulat yang menunjukkan jumlah baris yang akan dikembalikan. Dalam contoh kami, kami memesan berdasarkan harga dan kemudian membatasi baris yang dikembalikan menjadi 3.

Berbeda dengan metode OFFSET – FETCH, TOP tidak memerlukan ORDER BY. Berikut ini contoh serupa, tetapi tanpa mengurutkan catatan:

Solusi 4:

SELECT TOP 3
 name, price
FROM toy;

Berikut hasil querynya:

Perhatikan bahwa catatan yang berbeda telah dikembalikan. Biasanya (tetapi tidak selalu) baris akan ditampilkan dalam urutan catatan dimasukkan ke dalam tabel.

Sebaiknya gunakan OFFSET dan FETCH daripada TOP, karena OFFSET dan FETCH adalah standar SQL; TOP khusus untuk T-SQL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buat Pemicu DML di SQL Server

  2. Belajar Menyimpan dan Menganalisis Dokumen di Sistem File Windows dengan Pencarian Semantik SQL Server – Bagian 1

  3. Pola Desain untuk Bidang Kustom dalam Basis Data Relasional

  4. Cara Menginstal SQL Server di Mac dengan VirtualBox

  5. Cara optimal untuk menggabungkan/menggabungkan string