MySQL greatest()和least()函数

您所在的位置:网站首页 greast意思 MySQL greatest()和least()函数

MySQL greatest()和least()函数

2024-07-12 08:13| 来源: 网络整理| 查看: 265

在本教程中,您将学习如何使用MySQL GREATEST和LEAST函数分别找到两个或多个字段的最大和最小值。

MySQL GREATEST和LEAST函数介绍

GREATEST和LEAST函数都使用N个参数,并分别返回最大和最小值。下面说明GREATEST和LEAST函数的语法:

GREATEST(value1, value2, ...); LEAST(value1,value2,...); SQL

参数可能具有混合数据类型。以下比较规则适用于这两个函数:

如果任何参数为NULL,则两个函数都将立即返回NULL,而不进行任何比较。如果在INT或REAL上下文中使用函数,或者所有参数都是整数值或REAL值,那么它们将分别作为INT和REAL来比较。如果参数由数字和字符串组成,则函数将它们作为数字进行比较。如果至少一个参数是非二进制(字符)字符串,则函数将将参数作为非二进制字符串进行比较。在所有其他情况下,函数将参数作为二进制字符串进行比较

以下示例演示了GREATEST和LEAST函数的工作原理。

SELECT GREATEST(10, 20, 30), -- 30 LEAST(10, 20, 30); -- 10 SELECT GREATEST(10, null, 30), -- null LEAST(10, null , 30); -- null SQL MySQL GREATEST和最小值的例子

下面为了演示,我们来创建一个名称为:revenues的新表。

USE testdb; CREATE TABLE IF NOT EXISTS revenues ( company_id INT PRIMARY KEY, q1 DECIMAL(19 , 2 ), q2 DECIMAL(19 , 2 ), q3 DECIMAL(19 , 2 ), q4 DECIMAL(19 , 2 ) ); SQL

revenues表由company_id作为主键,其它四个列分别存储每季度公司的收入。

以下语句在revenues表中插入两行 -

INSERT INTO revenues(company_id,q1,q2,q3,q4) VALUES (1,100,120,110,130), (2,250,260,300,310); SQL

要获得每个公司的最高和最低收入,可使用GREATEST和LOWEST,如下查询语句:

SELECT company_id, LEAST(q1, q2, q3, q4) low, GREATEST(q1, q2, q3, q4) high FROM revenues; SQL

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

+------------+--------+--------+ | company_id | low | high | +------------+--------+--------+ | 1 | 100.00 | 130.00 | | 2 | 250.00 | 310.00 | +------------+--------+--------+ 2 rows in set SQL

如果任何参数为NULL,则GREATEST和LEAST函数都返回NULL,这可能不是我们想要的。为了避免这种情况,可以使用IFNULL函数将NULL视为零来执行数字比较。

以下语句向revenues表中插入在q4列中带有NULL值的一条新行。

INSERT INTO revenues(company_id,q1,q2,q3,q4) VALUES (3,100,120,110,null); SQL

如果使用GREATEST和LEAST函数来查询数据,则可以得到按预期设计的结果。

SELECT company_id, LEAST(q1, q2, q3, q4) low, GREATEST(q1, q2, q3, q4) high FROM revenues; SQL

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

+------------+--------+--------+ | company_id | low | high | +------------+--------+--------+ | 1 | 100.00 | 130.00 | | 2 | 250.00 | 310.00 | | 3 | NULL | NULL | +------------+--------+--------+ 3 rows in set SQL

如上面查询所见,其ID=3的公司的最低值和最高值为NULL。

为避免这种情况,您可以使用IFNULL函数,如下:

SELECT company_id, LEAST(IFNULL(q1, 0), IFNULL(q2, 0), IFNULL(q3, 0), IFNULL(q4, 0)) low, GREATEST(IFNULL(q1, 0), IFNULL(q2, 0), IFNULL(q3, 0), IFNULL(q4, 0)) high FROM revenues; SQL

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

+------------+--------+--------+ | company_id | low | high | +------------+--------+--------+ | 1 | 100.00 | 130.00 | | 2 | 250.00 | 310.00 | | 3 | 0.00 | 120.00 | +------------+--------+--------+ 3 rows in set SQL

在本教程中,您已经学习了如何使用MySQL GREATEST和LEAST函数来查找值列表中最大和最小的值。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3