Maison > base de données > tutoriel mysql > le corps du texte

Comment interroger la valeur maximale dans MySQL

青灯夜游
Libérer: 2021-12-31 15:10:40
original
36799 Les gens l'ont consulté

Dans MySQL, vous pouvez utiliser l'instruction "SELECT" et la fonction MAX() pour interroger la valeur maximale. Cette fonction peut renvoyer la valeur maximale dans un ensemble de valeurs. La syntaxe est "SELECT MAX(DISTINCT expression) FROM data. nom de la table ;".

Comment interroger la valeur maximale dans MySQL

L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.

Dans MySQL, vous pouvez utiliser l'instruction "SELECT" et la fonction MAX() pour interroger la valeur maximale.

La fonction MySQL MAX() renvoie la valeur maximale dans un ensemble de valeurs. La fonction MAX() est très pratique dans de nombreuses requêtes, comme par exemple trouver la quantité maximale, le produit le plus cher et le paiement maximum par un client. MAX()函数返回一组值中的最大值。MAX()函数在许多查询中非常方便,例如查找最大数量,最昂贵的产品以及客户的最大付款。

MAX()函数的语法如下:

MAX(DISTINCT expression);
Copier après la connexion

如果添加DISTINCT运算符,则MAX函数返回不同值的最大值,它与所有值的最大值相同。 这意味着DISTINCT运算符不会对MAX函数产生任何影响(用不用DISTINCT运算符都可以)。

请注意,DISTINCT运算符在其他聚合函数(如COUNT,SUM和AVG)中生效。

MySQL MAX函数示例

我们来看看示例数据库(yiibaidb)中的payments表,其表结构如下所示 -

mysql> desc payments;
+----------------+---------------+------+-----+---------+-------+
| Field          | Type          | Null | Key | Default | Extra |
+----------------+---------------+------+-----+---------+-------+
| customerNumber | int(11)       | NO   | PRI | NULL    |       |
| checkNumber    | varchar(50)   | NO   | PRI | NULL    |       |
| paymentDate    | date          | NO   |     | NULL    |       |
| amount         | decimal(10,2) | NO   |     | NULL    |       |
+----------------+---------------+------+-----+---------+-------+
4 rows in set
Copier après la connexion

要在payments表中获得最大的付款,您可以使用以下查询:

SELECT 
    MAX(amount)
FROM
    payments;
Copier après la connexion

执行上面查询语句,得到以下结果 -

mysql> SELECT 
    MAX(amount)
FROM
    payments;
+-------------+
| MAX(amount) |
+-------------+
| 120166.58   |
+-------------+
1 row in set
Copier après la connexion

MySQL MAX函数在子查询中

不仅要获得最大的付款金额,还要获得其他付款信息,如客户编号,支票号码和付款日期,您可以在子查询中使用MAX函数,如下所示:

SELECT 
    *
FROM
    payments
WHERE
    amount = (
 SELECT 
            MAX(amount)
        FROM
            payments);
Copier après la connexion

执行上面查询语句,得到以下结果 -

+----------------+-------------+-------------+-----------+
| customerNumber | checkNumber | paymentDate | amount    |
+----------------+-------------+-------------+-----------+
|            141 | JE105477    | 2015-03-18  | 120166.58 |
+----------------+-------------+-------------+-----------+
1 row in set
Copier après la connexion

上面查询语句是怎么运行的?

  • 子查询返回所有的最大付款金额。
  • 外部查询获取的金额等于从子查询返回的最大金额的其他相关付款信息。

不使用MAX函数的另一种方法是使用ORDER BY子句以降序对结果集进行排序,并使用LIMIT子句获取第一行,如下查询:

SELECT 
    *
FROM
    payments
ORDER BY amount DESC
LIMIT 1;
Copier après la connexion

执行上面查询语句,得到以下结果 -

+----------------+-------------+-------------+-----------+
| customerNumber | checkNumber | paymentDate | amount    |
+----------------+-------------+-------------+-----------+
|            141 | JE105477    | 2015-03-18  | 120166.58 |
+----------------+-------------+-------------+-----------+
1 row in set
Copier après la connexion

如果您没有在amount列上创建索引,则第二个查询执行速度更快,因为它会检查payments表中的所有行,而第一个查询会检查payments表中的所有行两次,一次是在子查询中,另一次在外部查询中。 但是,如果amount列被索引,则第一个查询将执行得更快。

具有GROUP BY子句的MySQL MAX

要找到每个组的最大值,您可以在SELECT语句中使用MAX函数与GROUP BY子句。

对于每个客户,查询获得客户已支付的最大付款,可使用以下查询:

SELECT 
    customerNumber, MAX(amount)
FROM
    payments
GROUP BY customerNumber
ORDER BY MAX(amount);
Copier après la connexion

执行上面查询语句,得到以下查询结果 -

+----------------+-------------+
| customerNumber | MAX(amount) |
+----------------+-------------+
|            219 | 4465.85     |
|            198 | 9658.74     |
|            381 | 14379.9     |
|            103 | 14571.44    |
|            473 | 17746.26    |
|            362 | 18473.71    |
******* 此处省略一大波数据 ******
|            148 | 105743      |
|            124 | 111654.4    |
|            141 | 120166.58   |
+----------------+-------------+
98 rows in set
Copier après la connexion

具有HAVING子句的MySQL MAX

您可以在HAVING子句中使用GROUP BY子句中的MAX函数,以根据指定的条件为分组添加过滤器。

例如,以下查询查找每个客户的最大付款; 并根据返回款项,如下面查询语句,只查询金额超过80000

La syntaxe de la fonction MAX() est la suivante :

SELECT 
    customerNumber, MAX(amount)
FROM
    payments
GROUP BY customerNumber
HAVING MAX(amount) > 80000;
Copier après la connexion

Si vous ajoutez l'opérateur DISTINCT, la fonction MAX renvoie le valeur maximale de différentes valeurs, c'est la même chose que le maximum de toutes les valeurs. Cela signifie que l'opérateur DISTINCT n'aura aucun impact sur la fonction MAX (peu importe que l'opérateur DISTINCT soit utilisé ou non) .

Veuillez noter que l'opérateur DISTINCT fonctionne dans d'autres fonctions d'agrégation telles que COUNT, SUM et AVG.

Exemple de fonction MySQL MAX

Jetons un coup d'œil à la table paiements dans l'exemple de base de données ( yiibaidb), sa structure de table est la suivante - 🎜
+----------------+-------------+
| customerNumber | MAX(amount) |
+----------------+-------------+
|            114 | 82261.22    |
|            124 | 111654.4    |
|            141 | 120166.58   |
|            148 | 105743      |
|            167 | 85024.46    |
|            239 | 80375.24    |
|            321 | 85559.12    |
+----------------+-------------+
7 rows in set
Copier après la connexion
🎜 Pour obtenir le paiement maximum dans la table payments, vous pouvez utiliser la requête suivante : 🎜rrreee🎜Exécutez l'instruction de requête ci-dessus et obtenez les résultats suivants -🎜rrreee

Fonction MySQL MAX dans la sous-requête

🎜Non seulement pour obtenir le montant maximum du paiement, mais également pour obtenir d'autres informations de paiement telles que comme numéro de client, numéro de chèque et date de paiement, vous pouvez utiliser la fonction MAX dans une sous-requête, comme indiqué ci-dessous : 🎜rrreee🎜Exécutez l'instruction de requête ci-dessus et obtenez les résultats suivants -🎜rrreee🎜Comment l'instruction de requête ci-dessus est-elle exécutée ? 🎜
  • La sous-requête renvoie tous les montants de paiement maximum.
  • La requête externe récupère d'autres informations de paiement associées pour un montant égal au montant maximum renvoyé par la sous-requête.
🎜Une alternative à ne pas utiliser la fonction MAX est d'utiliser la clause ORDER BY pour trier l'ensemble de résultats par ordre décroissant et d'utiliser LIMIT obtient la première ligne, interrogez comme suit : 🎜rrreee🎜Exécutez l'instruction de requête ci-dessus et obtenez les résultats suivants -🎜rrreee🎜Si vous ne créez pas d'index sur le montant colonne, puis la deuxième requête s'exécute plus rapidement car elle vérifie toutes les lignes de la table paiements, tandis que la première requête vérifie toutes les lignes de la table paiements deux fois, une fois une fois dans la sous-requête et une autre fois dans la requête externe. Cependant, si la colonne amount est indexée, la première requête s'exécutera plus rapidement. 🎜

MySQL MAX avec clause GROUP BY🎜Pour trouver la valeur maximale de chaque groupe, vous pouvez utiliser la fonction MAX avec la clause GROUP BY dans l'instruction SELECT. 🎜🎜Pour chaque client, effectuez une requête pour obtenir le paiement maximum que le client a payé. Vous pouvez utiliser la requête suivante : 🎜rrreee🎜Exécutez l'instruction de requête ci-dessus et obtenez les résultats de requête suivants : 🎜rrreee

MySQL MAX avec clause HAVING

🎜Vous pouvez utiliser la clause GROUP BY dans la clause HAVING >MAX code> fonction pour ajouter des filtres aux groupes en fonction de conditions spécifiées. 🎜🎜Par exemple, la requête suivante recherche le paiement maximum pour chaque client ; et en fonction du montant retourné, comme indiqué dans l'instruction de requête suivante, seules les requêtes pour les paiements dépassant 80000 - 🎜rrreee🎜Exécutez le ci-dessus et obtenez les résultats suivants -🎜rrreee🎜[Recommandations associées : 🎜Tutoriel vidéo mysql🎜]🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!