MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

MariaDB FOUND_ROWS () Giải thích

Trong MariaDB, bạn có thể sử dụng LIMIT để giảm số hàng được trả về bởi một truy vấn. FOUND_ROWS() hàm có thể được sử dụng trong các truy vấn như vậy để trả về số hàng lẽ ra đã được trả về, có LIMIT điều khoản không được bao gồm.

Điều này có thể hữu ích, vì nó cho phép bạn lấy thông tin này mà không cần phải chạy lại truy vấn.

FOUND_ROWS() cũng có thể được sử dụng để trả về số lượng hàng thực sự được trả về bởi câu lệnh giới hạn, nếu đó là những gì bạn cần.

Cú pháp

Cú pháp như sau:

FOUND_ROWS()

Không có đối số nào được yêu cầu hoặc chấp nhận.

Để nhận số hàng được trả về bởi một câu lệnh, hãy bao gồm SQL_CALC_FOUND_ROWS trong câu lệnh, rồi chạy FOUND_ROWS() trong một truy vấn riêng biệt (sau khi bạn đã chạy truy vấn ban đầu).

Ví dụ

Dưới đây là một ví dụ để chứng minh cách hoạt động của hàm.

Giả sử chúng ta tạo một bảng như sau:

SELECT SQL_CALC_FOUND_ROWS * 
FROM Pets 
LIMIT 2;

Kết quả:

+-------+-----------+---------+---------+------------+
| PetId | PetTypeId | OwnerId | PetName | DOB        |
+-------+-----------+---------+---------+------------+
|     1 |         2 |       3 | Fluffy  | 2020-11-20 |
|     2 |         3 |       3 | Fetch   | 2019-08-16 |
+-------+-----------+---------+---------+------------+

Chỉ có hai hàng được trả lại, như được chỉ định bởi LIMIT mệnh đề.

Tuy nhiên, bây giờ hãy sử dụng FOUND_ROWS() để xem có bao nhiêu hàng sẽ được trả lại nếu chúng tôi không sử dụng LIMIT mệnh đề:

SELECT FOUND_ROWS();

Kết quả:

+--------------+
| FOUND_ROWS() |
+--------------+
|            8 |
+--------------+

Nó cho chúng tôi biết rằng tám hàng sẽ được trả lại nếu chúng tôi không sử dụng LIMIT mệnh đề.

Chúng tôi có thể xác minh điều này bằng cách chạy truy vấn mà không có LIMIT mệnh đề:

SELECT * 
FROM Pets;

Kết quả:

+-------+-----------+---------+---------+------------+
| PetId | PetTypeId | OwnerId | PetName | DOB        |
+-------+-----------+---------+---------+------------+
|     1 |         2 |       3 | Fluffy  | 2020-11-20 |
|     2 |         3 |       3 | Fetch   | 2019-08-16 |
|     3 |         2 |       2 | Scratch | 2018-10-01 |
|     4 |         3 |       3 | Wag     | 2020-03-15 |
|     5 |         1 |       1 | Tweet   | 2020-11-28 |
|     6 |         3 |       4 | Fluffy  | 2020-09-17 |
|     7 |         3 |       2 | Bark    | NULL       |
|     8 |         2 |       4 | Meow    | NULL       |
+-------+-----------+---------+---------+------------+

Tôi cũng đã xóa SQL_CALC_FOUND_ROWS từ tuyên bố, vì chúng tôi không cần nó vào khoảng thời gian này.

Bỏ qua SQL_CALC_FOUND_ROWS Tùy chọn

Nếu bạn bỏ qua SQL_CALC_FOUND_ROWS tùy chọn, FOUND_ROWS() hàm trả về thực tế số hàng được trả về. Nói cách khác, nó trả về số hàng được trả về sau LIMIT điều khoản đã được áp dụng.

Đây là ví dụ tương tự không có SQL_CALC_FOUND_ROWS tùy chọn:

SELECT * 
FROM Pets 
LIMIT 2;

Kết quả:

+-------+-----------+---------+---------+------------+
| PetId | PetTypeId | OwnerId | PetName | DOB        |
+-------+-----------+---------+---------+------------+
|     1 |         2 |       3 | Fluffy  | 2020-11-20 |
|     2 |         3 |       3 | Fetch   | 2019-08-16 |
+-------+-----------+---------+---------+------------+

Bây giờ hãy chạy FOUND_ROWS() :

SELECT FOUND_ROWS();

Kết quả:

+--------------+
| FOUND_ROWS() |
+--------------+
|            2 |
+--------------+

Lần này FOUND_ROWS() trả về 2 thay vì 8 .

Truy vấn không có LIMIT Mệnh đề

Khái niệm tương tự có thể được áp dụng cho các truy vấn không có LIMIT mệnh đề.

Ví dụ:

SELECT * 
FROM Pets;

Kết quả:

+-------+-----------+---------+---------+------------+
| PetId | PetTypeId | OwnerId | PetName | DOB        |
+-------+-----------+---------+---------+------------+
|     1 |         2 |       3 | Fluffy  | 2020-11-20 |
|     2 |         3 |       3 | Fetch   | 2019-08-16 |
|     3 |         2 |       2 | Scratch | 2018-10-01 |
|     4 |         3 |       3 | Wag     | 2020-03-15 |
|     5 |         1 |       1 | Tweet   | 2020-11-28 |
|     6 |         3 |       4 | Fluffy  | 2020-09-17 |
|     7 |         3 |       2 | Bark    | NULL       |
|     8 |         2 |       4 | Meow    | NULL       |
+-------+-----------+---------+---------+------------+

Bây giờ hãy chạy FOUND_ROWS() :

SELECT FOUND_ROWS();

Kết quả:

+--------------+
| FOUND_ROWS() |
+--------------+
|            8 |
+--------------+

Tuyên bố khác

FOUND_ROWS() hàm cũng có thể được sử dụng trên một số câu lệnh khác, chẳng hạn như SHOW , DESCRIBEHELP .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chạy các truy vấn phân tích dữ liệu lớn bằng SQL và Presto

  2. Nhiều nô lệ sao chép bị trì hoãn để khôi phục thảm họa với RTO thấp

  3. Hướng dẫn sao chép luồng trực tuyến cụm MySQL Galera:Phần thứ nhất

  4. Cách STR_TO_DATE () hoạt động trong MariaDB

  5. Cách khắc phục sự cố cơ sở dữ liệu MySQL