Nhận số hàng bị ảnh hưởng trong MySQL

Trong SQL Server, bạn có thể sử dụng hàm hệ thống @@ROWCOUNT để trả về số hàng bị ảnh hưởng bởi câu lệnh T-SQL cuối cùng

Ví dụ: nếu một truy vấn trả về 4 hàng, thì @@ROWCOUNT sẽ trả về 4

Ví dụ 1 – Chọn dữ liệu

Đây là một ví dụ cơ bản để chứng minh nó hoạt động như thế nào

SELECT * FROM Dogs;
SELECT @@ROWCOUNT;

Kết quả

+---------+-----------+-----------+
| DogId   | DogName   | GoodDog   |
|---------+-----------+-----------|
| 1       | Fetch     | 0         |
| 2       | Fluffy    | 0         |
| 3       | Wag       | 0         |
+---------+-----------+-----------+
(3 rows affected)
+--------------------+
| (No column name)   |
|--------------------|
| 3                  |
+--------------------+
(1 row affected)

Trong trường hợp này, câu lệnh

+---------+-----------+-----------+
| DogId   | DogName   | GoodDog   |
|---------+-----------+-----------|
| 1       | Fetch     | 0         |
| 2       | Fluffy    | 0         |
| 3       | Wag       | 0         |
+---------+-----------+-----------+
(3 rows affected)
+--------------------+
| (No column name)   |
|--------------------|
| 3                  |
+--------------------+
(1 row affected)
0 của tôi trả về 3 hàng và do đó, @@ROWCOUNT trả về 3

Ví dụ 2 – Cập nhật dữ liệu

Đây là một ví dụ về việc sử dụng @@ROWCOUNT với câu lệnh

+---------+-----------+-----------+
| DogId   | DogName   | GoodDog   |
|---------+-----------+-----------|
| 1       | Fetch     | 0         |
| 2       | Fluffy    | 0         |
| 3       | Wag       | 0         |
+---------+-----------+-----------+
(3 rows affected)
+--------------------+
| (No column name)   |
|--------------------|
| 3                  |
+--------------------+
(1 row affected)
3 để kiểm tra xem có bất kỳ hàng nào được cập nhật hay không

UPDATE Dogs 
SET GoodDog = 1
WHERE DogId = 4
IF @@ROWCOUNT > 0
    PRINT 'Your dog will be rewarded accordingly';
ELSE
    PRINT 'A dog outside the system cannot be a good dog'
GO

Kết quả

(0 rows affected)
A dog outside the system cannot be a good dog

Trong trường hợp này, không có hàng nào được cập nhật vì DogId không tồn tại trong bảng. Chúng tôi có thể sử dụng @@ROWCOUNT với câu lệnh

+---------+-----------+-----------+
| DogId   | DogName   | GoodDog   |
|---------+-----------+-----------|
| 1       | Fetch     | 0         |
| 2       | Fluffy    | 0         |
| 3       | Wag       | 0         |
+---------+-----------+-----------+
(3 rows affected)
+--------------------+
| (No column name)   |
|--------------------|
| 3                  |
+--------------------+
(1 row affected)
5 để trả về một thông báo thích hợp cho người dùng

Nó lại ở đây, nhưng lần này con chó tồn tại

UPDATE Dogs 
SET GoodDog = 1
WHERE DogId = 1
IF @@ROWCOUNT > 0
    PRINT 'Your dog will be rewarded accordingly';
ELSE
    PRINT 'A dog outside the system cannot be a good dog'
GO

Kết quả

________số 8_______

Bộ dữ liệu cực lớn?

Nếu bạn cho rằng số lượng hàng bị ảnh hưởng bởi một câu lệnh sẽ lớn hơn 2 tỷ, hãy sử dụng

+---------+-----------+-----------+
| DogId   | DogName   | GoodDog   |
|---------+-----------+-----------|
| 1       | Fetch     | 0         |
| 2       | Fluffy    | 0         |
| 3       | Wag       | 0         |
+---------+-----------+-----------+
(3 rows affected)
+--------------------+
| (No column name)   |
|--------------------|
| 3                  |
+--------------------+
(1 row affected)
6 để thay thế

Bạn có thể sử dụng nó giống như cách mà @@ROWCOUNT được sử dụng

UPDATE Dogs 
SET GoodDog = 1
WHERE DogId = 4
IF ROWCOUNT_BIG() > 0
    PRINT 'Your dog will be rewarded accordingly';
ELSE
    PRINT 'A dog outside the system cannot be a good dog'
GO

Kết quả

(0 rows affected)
A dog outside the system cannot be a good dog

Khi @@ROWCOUNT được Đặt lại

Các câu lệnh như

+---------+-----------+-----------+
| DogId   | DogName   | GoodDog   |
|---------+-----------+-----------|
| 1       | Fetch     | 0         |
| 2       | Fluffy    | 0         |
| 3       | Wag       | 0         |
+---------+-----------+-----------+
(3 rows affected)
+--------------------+
| (No column name)   |
|--------------------|
| 3                  |
+--------------------+
(1 row affected)
9,
UPDATE Dogs 
SET GoodDog = 1
WHERE DogId = 4
IF @@ROWCOUNT > 0
    PRINT 'Your dog will be rewarded accordingly';
ELSE
    PRINT 'A dog outside the system cannot be a good dog'
GO
0,
UPDATE Dogs 
SET GoodDog = 1
WHERE DogId = 4
IF @@ROWCOUNT > 0
    PRINT 'Your dog will be rewarded accordingly';
ELSE
    PRINT 'A dog outside the system cannot be a good dog'
GO
1,
UPDATE Dogs 
SET GoodDog = 1
WHERE DogId = 4
IF @@ROWCOUNT > 0
    PRINT 'Your dog will be rewarded accordingly';
ELSE
    PRINT 'A dog outside the system cannot be a good dog'
GO
2,
UPDATE Dogs 
SET GoodDog = 1
WHERE DogId = 4
IF @@ROWCOUNT > 0
    PRINT 'Your dog will be rewarded accordingly';
ELSE
    PRINT 'A dog outside the system cannot be a good dog'
GO
3,
UPDATE Dogs 
SET GoodDog = 1
WHERE DogId = 4
IF @@ROWCOUNT > 0
    PRINT 'Your dog will be rewarded accordingly';
ELSE
    PRINT 'A dog outside the system cannot be a good dog'
GO
4,
UPDATE Dogs 
SET GoodDog = 1
WHERE DogId = 4
IF @@ROWCOUNT > 0
    PRINT 'Your dog will be rewarded accordingly';
ELSE
    PRINT 'A dog outside the system cannot be a good dog'
GO
5 hoặc
UPDATE Dogs 
SET GoodDog = 1
WHERE DogId = 4
IF @@ROWCOUNT > 0
    PRINT 'Your dog will be rewarded accordingly';
ELSE
    PRINT 'A dog outside the system cannot be a good dog'
GO
6 đặt lại giá trị @@ROWCOUNT thành
UPDATE Dogs 
SET GoodDog = 1
WHERE DogId = 4
IF @@ROWCOUNT > 0
    PRINT 'Your dog will be rewarded accordingly';
ELSE
    PRINT 'A dog outside the system cannot be a good dog'
GO
8

Làm cách nào tôi có thể đếm số hàng bị ảnh hưởng trong SQL?

Các câu lệnh Transact-SQL có thể đặt giá trị trong @@ROWCOUNT theo các cách sau. .
Đặt @@ROWCOUNT thành số hàng bị ảnh hưởng hoặc đã đọc. Hàng có thể hoặc không thể được gửi đến khách hàng
Giữ nguyên @@ROWCOUNT từ lần thực thi câu lệnh trước đó
Đặt lại @@ROWCOUNT thành 0 nhưng không trả lại giá trị cho máy khách

Cái nào trả về số hàng bị ảnh hưởng?

SQL Server @@ROWCOUNT là một biến hệ thống được sử dụng để trả về số hàng bị ảnh hưởng bởi câu lệnh được thực thi cuối cùng trong lô.