Đôi khi bạn có thể cần lấy mọi hàng thứ n trong MySQL hoặc trả lại mọi hàng thứ n trong bảng của bạn. Trong bài viết này, chúng ta sẽ xem xét cách chọn mọi hàng thứ n trong MySQL.
Cách nhận mọi hàng thứ N trong MySQL
Chúng ta sẽ xem xét hai cách để lấy mọi hàng thứ N trong bảng - khi bạn có cột id like với các số liên tiếp trong đó và khi bạn không có.
Giả sử bạn có bảng sau doanh số (id, số tiền) . Đối với ví dụ đầu tiên của chúng tôi, cột id chứa các id hàng tuần tự - 1, 2, 3,…
mysql> create table sales(id int, amount int); mysql> insert into sales(id,amount) values(1,100), (2,300), (3,250), (4,150), (5,200); mysql> select * from sales; +----+--------+ | id | amount | +----+--------+ | 1 | 100 | | 2 | 300 | | 3 | 250 | | 4 | 150 | | 5 | 200 | +----+--------+
Phần thưởng đã đọc:Cách thêm phần tăng tự động trong bảng hiện có
Đây là truy vấn SQL để chọn mọi hàng thứ n trong MySQL.
mysql> select * from table_name where table_name.id mod n = 0;
Trong truy vấn trên, về cơ bản chúng tôi chọn mọi hàng có id mod n giá trị đánh giá bằng 0. Vì vậy, chúng tôi nhận được các hàng có id n, 2n, 3n,… Thay thế tên_bảng với tên bảng của bạn và n với mọi hàng thứ n mà bạn muốn trả về.
Dưới đây là một ví dụ để trả lại mọi hàng thứ 2 từ bảng bán hàng.
mysql> select * from sales where sales.id mod 2 = 0; +----+--------+ | id | amount | +----+--------+ | 2 | 300 | | 4 | 150 | +----+--------+
Phần thưởng đọc:Cách tìm hàng thứ n trong MySQL
Nếu bảng của bạn không có cột giống id với các số tuần tự được lưu trữ, thì đây là truy vấn SQL để lấy mọi hàng thứ n từ bảng.
Giả sử bạn có bảng sau doanh số (ngày_đặt_hàng, số tiền) không có cột giống như id.
mysql> create table sales2(order_date date, amount int); mysql> insert into sales2(order_date,amount) values('2020-10-01',100), ('2020-10-02',300), ('2020-10-03',250), ('2020-10-04',150), ('2020-10-05',200); mysql> select * from sales2; +------------+--------+ | order_date | amount | +------------+--------+ | 2020-10-01 | 100 | | 2020-10-02 | 300 | | 2020-10-03 | 250 | | 2020-10-04 | 150 | | 2020-10-05 | 200 | +------------+--------+
Phần thưởng đọc:Cách sao chép cơ sở dữ liệu MySQL sang máy chủ khác
Đây là truy vấn SQL để truy xuất mọi hàng thứ n trong MySQL.
SELECT * FROM ( SELECT @row := @row +1 AS rownum, [column name] FROM ( SELECT @row :=0) r, [table name] ) ranked WHERE rownum % [n] = 0
Trong truy vấn trên, hãy thay thế [n] bằng hàng thứ n mà bạn muốn lấy, thay [tên bảng] bằng tên bảng của bạn và [tên cột] bằng tên cột của bạn.
Trong truy vấn trên, chúng tôi sử dụng các truy vấn lồng nhau. Trong truy vấn bên trong đánh giá và chỉ định số hàng cho mỗi hàng và lưu trữ nó trong một biến tạm thời được gọi là rownum. Truy vấn bên ngoài chọn các hàng có giá trị rownum mod n bằng không.
Đây là truy vấn SQL để chọn mọi hàng thứ 2 trong MySQL.
mysql> SELECT * FROM ( SELECT @row := @row +1 AS rownum, amount FROM ( SELECT @row :=0) r, sales2 ) ranked WHERE rownum % 2 = 0; +--------+--------+ | rownum | amount | +--------+--------+ | 2 | 300 | | 4 | 150 | +--------+--------+
Hy vọng rằng, bài viết này sẽ giúp bạn chọn mọi hàng thứ n trong MySQL.
Ubiq giúp dễ dàng trực quan hóa dữ liệu và theo dõi chúng trong trang tổng quan thời gian thực. Dùng thử Ubiq miễn phí.