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

Làm cách nào để xóa bản ghi cuối cùng (với điều kiện) khỏi một bảng trong MySQL?

Để xóa bản ghi cuối cùng (với điều kiện) khỏi bảng, bạn cần sử dụng ORDER BY DESC với LIMIT

1. Cú pháp như sau:

DELETE FROM yourTableName WHERE yourColumnName1=yourValue ORDER BY yourColumnName2 DESC LIMIT 1;

Cú pháp trên sẽ xóa bản ghi cuối cùng (với điều kiện) khỏi một bảng. Nó sắp xếp cột theo thứ tự giảm dần và chọn phần tử đầu tiên để xóa.

Để hiểu cú pháp trên, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau:

mysql> create table UserLoginTable
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> UserId int,
   -> UserLoginDateTime datetime,
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.94 sec)

Chèn một số bản ghi trong bảng bằng lệnh chèn. Truy vấn như sau:

mysql> insert into UserLoginTable(UserId,UserLoginDateTime) values(2,'2019-01-27 13:47:20');
Query OK, 1 row affected (0.19 sec)
mysql> insert into UserLoginTable(UserId,UserLoginDateTime) values(1,'2018-11-28 12:30:12');
Query OK, 1 row affected (0.16 sec)
mysql> insert into UserLoginTable(UserId,UserLoginDateTime) values(2,'2019-01-26 11:30:30');
Query OK, 1 row affected (0.20 sec)
mysql> insert into UserLoginTable(UserId,UserLoginDateTime) values(1,'2015-03-11 15:23:55');
Query OK, 1 row affected (0.21 sec)
mysql> insert into UserLoginTable(UserId,UserLoginDateTime) values(2,'2019-03-21 16:01:56');
Query OK, 1 row affected (0.23 sec)

Bây giờ bạn có thể 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 UserLoginTable;

Sau đây là kết quả:

+----+--------+---------------------+
| Id | UserId | UserLoginDateTime   |
+----+--------+---------------------+
|  1 |      2 | 2019-01-27 13:47:20 |
|  2 |      1 | 2018-11-28 12:30:12 |
|  3 |      2 | 2019-01-26 11:30:30 |
|  4 |      1 | 2015-03-11 15:23:55 |
|  5 |      2 | 2019-03-21 16:01:56 |
+----+--------+---------------------+
5 rows in set (0.00 sec)

Đây là truy vấn để xóa bản ghi cuối cùng (với điều kiện) khỏi bảng:

mysql> delete from UserLoginTable where UserId=2 ORDER BY UserLoginDateTime DESC LIMIT 1;
Query OK, 1 row affected (0.16 sec)

Kiểm tra bản ghi bảng một lần nữa bằng cách sử dụng câu lệnh select. Truy vấn như sau:

mysql> select *from UserLoginTable;

Sau đây là kết quả:

+----+--------+---------------------+
| Id | UserId | UserLoginDateTime   |
+----+--------+---------------------+
|  1 |      2 | 2019-01-27 13:47:20 |
|  2 |      1 | 2018-11-28 12:30:12 |
|  3 |      2 | 2019-01-26 11:30:30 |
|  4 |      1 | 2015-03-11 15:23:55 |
+----+--------+---------------------+
4 rows in set (0.00 sec)

Bản ghi cuối cùng hiện đã bị xóa khỏi bảng với UserId 2.