Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Chọn tất cả hàng trừ hàng cuối cùng trong MySQL

Để lấy tất cả bản ghi trừ hàng cuối cùng (theo ID lớn nhất), sử dụng toán tử != kết hợp subquery MAX(id).

Cú pháp

SELECT * FROM ten_bang 
WHERE cot_id != (SELECT MAX(cot_id) FROM ten_bang);

Ví dụ minh họa

Tạo bảng:

mysql> CREATE TABLE AllRecordsExceptLastOne (
    -> Id INT NOT NULL AUTO_INCREMENT,
    -> UserName VARCHAR(10),
    -> UserAge INT,
    -> PRIMARY KEY(Id)
    -> );

mysql> INSERT INTO AllRecordsExceptLastOne(UserName, UserAge) VALUES('John', 21);
mysql> INSERT INTO AllRecordsExceptLastOne(UserName, UserAge) VALUES('Carol', 28);
mysql> INSERT INTO AllRecordsExceptLastOne(UserName, UserAge) VALUES('Mike', 22);
mysql> INSERT INTO AllRecordsExceptLastOne(UserName, UserAge) VALUES('Sam', 29);
mysql> INSERT INTO AllRecordsExceptLastOne(UserName, UserAge) VALUES('David', 27);
mysql> INSERT INTO AllRecordsExceptLastOne(UserName, UserAge) VALUES('Larry', 24);

Dữ liệu (6 hàng):

+----+----------+---------+
| Id | UserName | UserAge |
+----+----------+---------+
|  1 | John     |      21 |
|  2 | Carol    |      28 |
|  3 | Mike     |      22 |
|  4 | Sam      |      29 |
|  5 | David    |      27 |
|  6 | Larry    |      24 |
+----+----------+---------+

Loại bỏ hàng cuối (Id=6):

mysql> SELECT * FROM AllRecordsExceptLastOne 
    -> WHERE Id != (SELECT MAX(Id) FROM AllRecordsExceptLastOne);

Kết quả (5 hàng):

+----+----------+---------+
| Id | UserName | UserAge |
+----+----------+---------+
|  1 | John     |      21 |
|  2 | Carol    |      28 |
|  3 | Mike     |      22 |
|  4 | Sam      |      29 |
|  5 | David    |      27 |
+----+----------+---------+

Cách khác (MySQL 8.0+)

-- Dùng window function
SELECT * FROM (
    SELECT *, ROW_NUMBER() OVER (ORDER BY Id DESC) AS rn
    FROM AllRecordsExceptLastOne
) t WHERE rn > 1;

-- Hoặc LIMIT offset
SELECT * FROM AllRecordsExceptLastOne ORDER BY Id LIMIT 18446744073709551615 OFFSET 1;

Lưu ý: Cách != (SELECT MAX...) đơn giản, tương thích mọi phiên bản MySQL.