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

Tìm giá trị lớn thứ n của một cột trong MySQL

Dùng ORDER BY DESC với LIMIT để tìm giá trị lớn thứ n.

  • Lớn thứ 2: LIMIT 1,1
  • Lớn thứ 4: LIMIT 3,1
  • Lớn nhất: LIMIT 1

Tạo bảng NthSalaryDemo:

mysql> create table NthSalaryDemo    -> (    -> Id int NOT NULL AUTO_INCREMENT,    -> Name varchar(10),    -> Salary int,    -> PRIMARY KEY(Id)    -> ); Query OK, 0 rows affected (1.03 sec)

Chèn 9 bản ghi lương khác nhau.

Hiển thị dữ liệu:

mysql> select *from NthSalaryDemo;
+----+---------+--------+ | Id | Name    | Salary | +----+---------+--------+ |  1 | Larry   |   5700 | |  2 | Sam     |   6000 | |  3 | Mike    |   5800 | |  4 | Carol   |   4500 | |  5 | Bob     |   4900 | |  6 | David   |   5400 | |  7 | Maxwell | 5300 | |  8 | James   | 4000 | |  9 | Robert  | 4600 | +----+---------+--------+ 9 rows in set (0.00 sec)

Trường hợp 1: Lớn thứ 4 (LIMIT 3,1):

mysql> select *from NthSalaryDemo order by Salary desc limit 3,1;
+----+-------+--------+ | Id | Name | Salary | +----+-------+--------+ | 6 | David | 5400 | +----+-------+--------+ 1 row in set (0.00 sec)

Trường hợp 2: Lớn thứ 2 (LIMIT 1,1):

mysql> select *from NthSalaryDemo order by Salary desc limit 1,1;
+----+------+--------+ | Id | Name | Salary | +----+------+--------+ | 3 | Mike | 5800 | +----+------+--------+ 1 row in set (0.00 sec)

Trường hợp 3: Lớn nhất (LIMIT 1):

mysql> select *from NthSalaryDemo order by Salary desc limit 1;
+----+------+--------+ | Id | Name | Salary | +----+------+--------+ | 2 | Sam | 6000 | +----+------+--------+ 1 row in set (0.00 sec)

Trường hợp 4: Lớn thứ 8 (LIMIT 7,1):

mysql> select *from NthSalaryDemo order by Salary desc limit 7,1;
+----+-------+--------+ | Id | Name  | Salary | +----+-------+--------+ |  4 | Carol | 4500 | +----+-------+--------+ 1 row in set (0.00 sec)