Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào để lấy bản ghi cuối cùng thứ hai từ một bảng trong MySQL?

Để lấy bản ghi trước bản ghi cuối cùng, tức là bản ghi cuối cùng thứ hai trong MySQL, bạn cần sử dụng truy vấn con.

Cú pháp như sau

SELECT *FROM
(SELECT *FROM yourTableName ORDER BY yourIdColumnName DESC LIMIT 2)
anyAliasName
ORDER BY yourIdColumnName LIMIT 1;

Đầu tiên chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau

mysql> create table lastRecordBeforeLastOne
   - > (
   - > Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   - > Name varchar(20) DEFAULT 'John',
   - > Age int DEFAULT 18
   - > );
Query OK, 0 rows affected (0.79 sec)

Bây giờ bạn có thể chèn một số bản ghi trong bảng bằng lệnh insert.

Truy vấn như sau

mysql> insert into lastRecordBeforeLastOne values();
Query OK, 1 row affected (0.21 sec)
mysql> insert into lastRecordBeforeLastOne(Name,Age) values('Larry',23);
Query OK, 1 row affected (0.19 sec)
mysql> insert into lastRecordBeforeLastOne(Name,Age) values('Mike',19);
Query OK, 1 row affected (0.20 sec)
mysql> insert into lastRecordBeforeLastOne(Name,Age) values('Sam',24);
Query OK, 1 row affected (0.22 sec)
mysql> insert into lastRecordBeforeLastOne(Name,Age) values('Bob',26);
Query OK, 1 row affected (0.13 sec)
mysql> insert into lastRecordBeforeLastOne(Name,Age) values('David',22);
Query OK, 1 row affected (0.23 sec)
mysql> insert into lastRecordBeforeLastOne(Name,Age) values('James',29);
Query OK, 1 row affected (0.14 sec)
mysql> insert into lastRecordBeforeLastOne(Name,Age) values('Carol',21);
Query OK, 1 row affected (0.23 sec)
mysql> insert into lastRecordBeforeLastOne(Name,Age) values('Maxwell',29);
Query OK, 1 row affected (0.18 sec)
mysql> insert into lastRecordBeforeLastOne(Name,Age) values('Chris',25);
Query OK, 1 row affected (0.14 sec)

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select.

Truy vấn như sau

mysql> select *from lastRecordBeforeLastOne;

Sau đây là kết quả

+----+---------+------+
| Id | Name    | Age  |
+----+---------+------+
|  1 | John    |   18 |
|  2 | Larry   |   23 |
|  3 | Mike    |   19 |
|  4 | Sam     |   24 |
|  5 | Bob     |   26 |
|  6 | David   |   22 |
|  7 | James   |   29 |
|  8 | Carol   |   21 |
|  9 | Maxwell |   29 |
| 10 | Chris   |   25 |
+----+---------+------+
10 rows in set (0.00 sec)

Đây là truy vấn để lấy bản ghi cuối cùng thứ hai trong MySQL

mysql> SELECT *FROM
   - > (SELECT *FROM lastRecordBeforeLastOne ORDER BY Id DESC LIMIT 2) tbl1
   - > ORDER BY Id LIMIT 1;

Sau đây là kết quả

+----+---------+------+
| Id | Name    | Age  |
+----+---------+------+
|  9 | Maxwell |   29 |
+----+---------+------+
1 row in set (0.00 sec)