MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQL列のn番目に高い値を見つける方法は?


列のn番目に高い値を見つけるには、LIMIT句を指定したORDERBYDESCを使用する必要があります。列の2番目に高い値が必要な場合は、次の構文を使用します。

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

列の4番目に高い値が必要な場合は、次の構文を使用します。

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)

挿入コマンドを使用して、テーブルにいくつかのレコードを挿入します。クエリは次のとおりです。

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番目に高い値を取得するためのクエリです。

次のクエリは、「給与」列の4番目に高い値を示します。

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」の2番目に高い値を取得するためのクエリは次のとおりです。

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 | Name | Salary |
+----+------+--------+
|  2 | Sam  | 6000   |
+----+------+--------+
1 row in set (0.00 sec)

ケース4: 「給与」列の8番目に高い値を取得する場合は、次のクエリを使用します。

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

出力は次のとおりです。

+----+-------+--------+
| Id | Name  | Salary |
+----+-------+--------+
|  4 | Carol |   4500 |
+----+-------+--------+
1 row in set (0.00 sec)

  1. MySQLで特定の列名を持つテーブルを見つける方法は?

    列名を見つけるには、information_schema.columnsを使用します。以下は構文です- select distinct table_name from information_schema.columns where column_name like '%yourSearchValue%' and table_schema=database(); さまざまなテーブルで列名を見つけるために、上記の構文を実装しましょう。ここでは、特定の列名が「クライアント」という単語を持つテーブル名のみが必要です- mysql> select distinct table_

  2. MySQLの列の最大値を見つける

    MAX(columnName)を使用して、列の最大値を見つける必要があります。ただし、最初は、MySQLのデータベースとテーブルについて理解します。 MySQLをインストールする前に、どのバージョンとどの配布形式(バイナリファイルまたはソースファイルから)を使用するかを決定することが重要です。データベースが新しく作成された場合、データベースにテーブルがないことは明らかです。 最も重要な部分の1つは、データベースの構造、必要なテーブル、すべてのテーブルの列、およびこれらのテーブル間の関係を決定することです。データベースに含める必要のあるもの、データベースの適切な名前、および適切な列名と行の値