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

Bagaimana SET ROWCOUNT Bekerja di SQL Server

Di SQL Server, Anda dapat menggunakan SET ROWCOUNT untuk membatasi baris yang dikembalikan oleh kueri.

Cara kerjanya adalah menyebabkan SQL Server berhenti memproses kueri setelah jumlah baris yang ditentukan dikembalikan.

Ini mirip dengan TOP() klausa, tetapi dengan perbedaan bahwa SET ROWCOUNT diatur di luar kueri, dan akan memengaruhi semua kueri berikutnya.

Contoh

Berikut ini contoh untuk didemonstrasikan.

Pertama, mari kita lakukan kueri tanpa menyetel ROWCOUNT .

SELECT * FROM Dogs;

Hasil:

+---------+-----------+
| DogId   | DogName   |
|---------+-----------|
| 1       | Fetch     |
| 2       | Fluffy    |
| 3       | Wag       |
| 1002    | Fetch     |
+---------+-----------+
(4 rows affected)

Jadi empat baris dikembalikan tanpa menyetel ROWCOUNT .

Sekarang mari kita gunakan SET ROWCOUNT untuk membatasi jumlah baris, lalu jalankan kueri lagi.

SET ROWCOUNT 2;
SELECT * FROM Dogs;

Hasil:

+---------+-----------+
| DogId   | DogName   |
|---------+-----------|
| 1       | Fetch     |
| 2       | Fluffy    |
+---------+-----------+
(2 rows affected)

Permintaan Selanjutnya

Seperti disebutkan, SET ROWCOUNT memengaruhi semua kueri berikutnya.

Jika saya menjalankan kueri berikut segera setelah kueri sebelumnya, dua baris juga dikembalikan.

SELECT * FROM Cats;

Hasil:

+---------+-----------+
| CatId   | CatName   |
|---------+-----------|
| 1       | Meow      |
| 2       | Fluffy    |
+---------+-----------+
(2 rows affected)

Ini terlepas dari kenyataan bahwa tiga baris akan dikembalikan, seandainya saya tidak menggunakan SET ROWCOUNT untuk membatasi baris yang dikembalikan.

Saya dapat memverifikasi ini dengan COUNT() klausa.

SELECT COUNT(*) FROM Cats;

Hasil:

+--------------------+
| (No column name)   |
|--------------------|
| 3                  |
+--------------------+

Setel Ulang ROWCOUNT

Anda dapat mengatur ulang ROWCOUNT nilai dengan memberinya nilai 0 (nol).

Ini berarti bahwa kueri tidak akan lagi dibatasi hasilnya. Kueri akan terus diproses hingga akhir.

SET ROWCOUNT 0;
SELECT * FROM Cats;

Hasil:

+---------+-----------+
| CatId   | CatName   |
|---------+-----------|
| 1       | Meow      |
| 2       | Fluffy    |
| 3       | Scratch   |
+---------+-----------+
(3 rows affected)

ROWCOUNT vs TOP()

Jika Anda menggunakan TOP() klausa dalam kueri saat Anda telah menyetel ROWCOUNT , ROWCOUNT . Anda pengaturan hanya akan menimpa TOP() jika ROWCOUNT adalah nilai yang lebih kecil.

Berikut adalah contoh di mana ROWCOUNT adalah nilai yang lebih besar.

SET ROWCOUNT 3;
SELECT TOP(2) * FROM Dogs;

Hasil:

+---------+-----------+
| DogId   | DogName   |
|---------+-----------|
| 1       | Fetch     |
| 2       | Fluffy    |
+---------+-----------+
(2 rows affected)

Dalam hal ini, TOP() klausa menang.

Dan inilah contoh di mana ROWCOUNT adalah nilai yang lebih kecil.

SET ROWCOUNT 1;
SELECT TOP(2) * FROM Dogs;

Hasil:

+---------+-----------+
| DogId   | DogName   |
|---------+-----------|
| 1       | Fetch     |
+---------+-----------+
(1 row affected)

Kompatibilitas

Perhatikan bahwa Microsoft menyarankan agar SET ROWCOUNT tidak akan mempengaruhi DELETE , INSERT , dan UPDATE pernyataan dalam rilis SQL Server di masa mendatang. Microsoft menganjurkan agar Anda menghindari penggunaan tersebut dalam pekerjaan pengembangan baru, dan berencana untuk memodifikasi aplikasi yang saat ini menggunakannya.

Microsoft merekomendasikan penggunaan TOP() klausa jika Anda perlu membatasi baris yang terpengaruh di DELETE , INSERT , dan UPDATE pernyataan.

Hati-hati

ROWCOUNT opsi berfungsi pada sebagian besar pernyataan T-SQL, termasuk pemicu. Namun, itu tidak memengaruhi kursor dinamis, tetapi membatasi baris kunci dan kursor tidak sensitif. Oleh karena itu, opsi ini harus digunakan dengan hati-hati.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Melihat Beberapa Kueri dan Hasil Berdampingan di SQL Server Management Studio (SSMS) - Tutorial SQL Server / TSQL Bagian 14

  2. Ambil ID dari catatan yang dimasukkan:Php &MS SQL SERVER

  3. grup sql hanya dengan baris yang berurutan

  4. Simulasi CONNECT SEBELUMNYA dari Oracle di SQL Server

  5. Gunakan FILEGROUP_NAME() untuk Mengembalikan Nama Filegroup di SQL Server