MySQL 如何在列中找到第n个最高值

MySQL 如何在列中找到第n个最高值

要找到列的第n高值,您需要使用ORDER BY DESC和LIMIT子句。如果您想要列的第二个最高值,请使用以下语法:

SELECT *FROM yourTableName ORDER BY DESC yourColumnName LIMIT 1,1;
Mysql

如果您想要列的第四个最高值,请使用以下语法:

SELECT *FROM yourTableName ORDER BY DESC yourColumnName LIMIT 3,1;
Mysql

如果您想要列的第一个最高值,请使用以下语法:

SELECT *FROM yourTableName ORDER BY DESC yourColumnName LIMIT 1;
Mysql

如上面的语法所讨论的,您只需要在LIMIT子句中进行更改。为了理解上面的语法,让我们创建一个表格。创建表的查询语句如下:

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)
Mysql

使用insert命令在表中插入一些记录。查询语句如下:

mysql> insert into NthSalaryDemo(Name,Salary) values('Larry',5700);
Query OK, 1 row affected (0.41 sec)
mysql> insert into NthSalaryDemo(Name,Salary) values('Sam',6000);
Query OK, 1 row affected (0.16 sec)
mysql> insert into NthSalaryDemo(Name,Salary) values('Mike',5800);
Query OK, 1 row affected (0.16 sec)
mysql> insert into NthSalaryDemo(Name,Salary) values('Carol',4500);
Query OK, 1 row affected (0.17 sec)
mysql> insert into NthSalaryDemo(Name,Salary) values('Bob',4900);
Query OK, 1 row affected (0.20 sec)
mysql> insert into NthSalaryDemo(Name,Salary) values('David',5400);
Query OK, 1 row affected (0.27 sec)
mysql> insert into NthSalaryDemo(Name,Salary) values('Maxwell',5300);
Query OK, 1 row affected (0.21 sec)
mysql> insert into NthSalaryDemo(Name,Salary) values('James',4000);
Query OK, 1 row affected (0.19 sec)
mysql> insert into NthSalaryDemo(Name,Salary) values('Robert',4600);
Query OK, 1 row affected (0.19 sec)
Mysql

使用select语句显示表中的所有记录。查询语句如下:

mysql> select *from NthSalaryDemo;
Mysql

以下为输出结果:

+----+---------+--------+
| 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)
Mysql

案例1: 以下是获取一列的第n个最高值的查询语句。

以下查询将给出列’Salary’的第四个最高值:

mysql> select *from NthSalaryDemo order by Salary desc limit 3,1;
Mysql

以下为输出结果:

+----+-------+--------+
| Id | Name  | Salary |
+----+-------+--------+
|  6 | David | 5400   |
+----+-------+--------+
1 row in set (0.00 sec)
Mysql

案例2: 以下是获取一列’Salary’的第二个最高值的查询语句:

mysql> select *from NthSalaryDemo order by Salary desc limit 1,1;
Mysql

以下为输出结果:

+----+------+--------+
| Id | Name | Salary |
+----+------+--------+
|  3 | Mike | 5800   |
+----+------+--------+
1 row in set (0.00 sec)
Mysql

案例3: 以下是获取一列的第一个最高值的查询语句:

mysql> select *from NthSalaryDemo order by Salary desc limit 1;
Mysql

以下为输出结果:

+----+------+--------+
| Id | 名称 | 工资   |
+----+------+--------+
|  2 | Sam  | 6000   |
+----+------+--------+
1 行结果集 (0.00 秒)
Mysql

第四种情况: 如果您想获取一列“工资”的第8个最高值,请使用以下查询:

mysql> select *from NthSalaryDemo order by Salary desc limit 7,1;
Mysql

输出如下:

+----+-------+--------+
| Id | 名称  | 工资   |
+----+-------+--------+
|  4 | Carol |   4500 |
+----+-------+--------+
1 行结果集 (0.00 秒)
Mysql

阅读更多:MySQL 教程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册