MySQL 如何在列中找到第n个最高值
要找到列的第n高值,您需要使用ORDER BY DESC和LIMIT子句。如果您想要列的第二个最高值,请使用以下语法:
SELECT *FROM yourTableName ORDER BY DESC yourColumnName LIMIT 1,1;
如果您想要列的第四个最高值,请使用以下语法:
SELECT *FROM yourTableName ORDER BY DESC yourColumnName LIMIT 3,1;
如果您想要列的第一个最高值,请使用以下语法:
SELECT *FROM yourTableName ORDER BY DESC yourColumnName LIMIT 1;
如上面的语法所讨论的,您只需要在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)
使用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)
使用select语句显示表中的所有记录。查询语句如下:
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)
案例1: 以下是获取一列的第n个最高值的查询语句。
以下查询将给出列’Salary’的第四个最高值:
mysql> select *from NthSalaryDemo order by Salary desc limit 3,1;
以下为输出结果:
+----+-------+--------+
| Id | Name | Salary |
+----+-------+--------+
| 6 | David | 5400 |
+----+-------+--------+
1 row in set (0.00 sec)
案例2: 以下是获取一列’Salary’的第二个最高值的查询语句:
mysql> select *from NthSalaryDemo order by Salary desc limit 1,1;
以下为输出结果:
+----+------+--------+
| Id | Name | Salary |
+----+------+--------+
| 3 | Mike | 5800 |
+----+------+--------+
1 row in set (0.00 sec)
案例3: 以下是获取一列的第一个最高值的查询语句:
mysql> select *from NthSalaryDemo order by Salary desc limit 1;
以下为输出结果:
+----+------+--------+
| Id | 名称 | 工资 |
+----+------+--------+
| 2 | Sam | 6000 |
+----+------+--------+
1 行结果集 (0.00 秒)
第四种情况: 如果您想获取一列“工资”的第8个最高值,请使用以下查询:
mysql> select *from NthSalaryDemo order by Salary desc limit 7,1;
输出如下:
+----+-------+--------+
| Id | 名称 | 工资 |
+----+-------+--------+
| 4 | Carol | 4500 |
+----+-------+--------+
1 行结果集 (0.00 秒)
阅读更多:MySQL 教程
极客教程