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

Làm thế nào để có được mọi hàng thứ N trong MySQL

Đô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í.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi khóa ngoại MySQL 1005 errno 150 khóa chính làm khóa ngoại

  2. Làm thế nào để chuyển đổi số trong tuần thành ngày?

  3. MySQL tương đương với hàm CHOOSE () của SQL Server là gì?

  4. mySQL chuyển đổi varchar thành ngày tháng

  5. Sử dụng bí danh cột trong mệnh đề WHERE của truy vấn MySQL tạo ra lỗi