新睿云

> 云数据库MySQL > mysql if详细讲解

mysql if详细讲解

作者/来源:新睿云小编 发布时间: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;

mysql1

MySQL IF客户表

IF如果状态为NULL,我们可以使用函数返回N / A 来改善输出,如下所示:

SELECT

    customerNumber,

    customerName,

    IF(state IS NULL, 'N/A', state) state,

    country

FROM

    customers;

mysql2 

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;

mysql3 

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;

mysql4 

订单状态

其次,通过将该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;

mysql5 

MySQL COUNT IF-订单状态

当然,您可以使用GROUP BY子句和该COUNT函数获得类似的结果,而无需将IF函数用作以下查询:

SELECT status, COUNT(STATUS)

FROM orders

GROUP BY status

看完此篇教程后是不是对MySQL IF有一个详细的了解,想深入学习的小伙伴可以进一步阅读《MySQL存储过程(procedure)其优势有哪些?

热门标签
new year
在线咨询
咨询热线 400-1515-720
投诉与建议
{{item.description}}

—您的烦恼我们已经收到—

我们会将处理结果发送至您的手机

请耐心等待