作者/来源:新睿云小编 发布时间:2019-11-18
MySQL IF函数是根据条件返回值的MySQL控制流函数之一。该IF功能有时称为IF ELSE或IF THEN ELSE功能。有的时候加上这个函数可以帮助我们提高执行效率哦!想要了解的小伙伴可千万不要错过新睿云这篇教程哦!
MySQL IF函数的语法如下:
IF(expr,if_true_expr,if_false_expr)
如果expr计算结果为TRUE,即,expr是不是NULL和expr不为0时,该IF函数返回if_true_expr,否则,返回if_false_expr该IF函数返回数字 或字符串,具体取决于使用方式。
我们在本教程中介绍的IF函数与IF语句不同。
MySQL IF函数示例
让我们通过几个示例进行实践,以了解MySQL IF函数的工作方式。
一个简单的IF函数示例
您可以直接在SELECT语句中使用IF函数,而无需使用FROMand子句,如下所示:
SELECT IF(1 = 2,'true','false'); -- false
SELECT IF(1 = 1,' true','false'); -- true
使用MySQL IF函数显示N / A而不是NULL
让我们 看一看在该数据customers表中的示例数据库。
在customers表中,许多客户的state列中没有状态数据,因此,当我们选择客户时,状态列将显示NULL值,这对于报表目的没有意义。请参阅以下查询:
SELECT
customerNumber, customerName, state, country
FROM
customers;
MySQL IF客户表
IF如果状态为NULL,我们可以使用函数返回N / A 来改善输出,如下所示:
SELECT
customerNumber,
customerName,
IF(state IS NULL, 'N/A', state) state,
country
FROM
customers;
MySQL IF不适用,而不是NULL
MySQL IF函数功能
MySQL SUM IF –结合IF函数和SUM函数
该IF功能功能。假设您想知道已经发货和取消了多少订单,可以将IF函数与SUM聚合函数一起使用,如下所示:
SELECT
SUM(IF(status = 'Shipped', 1, 0)) AS Shipped,
SUM(IF(status = 'Cancelled', 1, 0)) AS Cancelled
FROM
orders;
MySQL SUM IF
在上面的查询,如果订单状态为shipped或cancelled , IF函数返回1否则返回0。SUM函数计算的总数shipped和cancelled基于所述的返回值的命令IF的功能。
MySQL COUNT IF –结合IF函数和COUNT函数
首先,我们使用以下查询在表中选择不同订单的状态orders:
SELECT DISTINCT
status
FROM
orders
ORDER BY status;
订单状态
其次,通过将该IF函数与该COUNT函数组合,可以得到每种状态下的订单数量。因为该COUNT函数不对NULL值进行计数,所以如果状态不在所选状态中,则该IF函数返回NULL,否则返回1。请参阅以下查询:
SELECT
COUNT(IF(status = 'Cancelled', 1, NULL)) Cancelled,
COUNT(IF(status = 'Disputed', 1, NULL)) Disputed,
COUNT(IF(status = 'In Process', 1, NULL)) 'In Process',
COUNT(IF(status = 'On Hold', 1, NULL)) 'On Hold',
COUNT(IF(status = 'Resolved', 1, NULL)) 'Resolved',
COUNT(IF(status = 'Shipped', 1, NULL)) 'Shipped'
FROM
orders;
MySQL COUNT IF-订单状态
当然,您可以使用GROUP BY子句和该COUNT函数获得类似的结果,而无需将IF函数用作以下查询:
SELECT status, COUNT(STATUS)
FROM orders
GROUP BY status
看完此篇教程后是不是对MySQL IF有一个详细的了解,想深入学习的小伙伴可以进一步阅读《MySQL存储过程(procedure)其优势有哪些?》