MySQL 中的 If ELSE

Preet Sanghavi 2023年1月3日 2022年5月13日
MySQL 中的 If ELSE

在本教程中,我们旨在探索如何在 MySQL 中使用 IF ELSE 语句。

数据分析师的关键角色之一是从数据中收集见解并产生有意义的结果。它可以在几种数据过滤和可视化技术的帮助下完成。

其中之一是 IF ELSE 语句。IF ELSE 语句,顾名思义,帮助我们过滤 MySQL 数据库中特定表的数据。

这些过滤条件在语句的 IF 块中设置。如果在我们的表中输入的数据不满足特定条件,则执行 ELSE 块。

例如,在包含员工详细信息的员工表中,如果我们希望根据员工的薪水过滤员工,可以使用 MySQL 中的 IF ELSE 子句。让我们了解这种方法是如何工作的。

在开始之前,让我们通过创建一个包含几行的 student_details 表来创建一个虚拟数据集。

-- create the table student_details
CREATE TABLE student_details(
  stu_id int,
  stu_firstName varchar(255) DEFAULT NULL,
  stu_lastName varchar(255) DEFAULT NULL,
  primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName) 
 VALUES(1,"Preet","Sanghavi"),
 (2,"Rich","John"),
 (3,"Veron","Brow"),
 (4,"Geo","Jos"),
 (5,"Hash","Shah"),
 (6,"Sachin","Parker"),
 (7,"David","Miller");

要查看数据中的条目,我们使用以下代码。

SELECT * FROM student_details;

输出:

stu_id	stu_firstName	stu_lastName
1	      Preet	        Sanghavi
2	      Rich	        John
3	      Veron	        Brow
4	      Geo	        Jos
5	      Hash	        Shah
6	      Sachin	    Parker
7	      David	        Miller

MySQL 中的 IF ELSE 语句

IF ELSE 技术的基本语法如下。

select column_name, 
    (
    CASE 
        WHEN <condition> THEN <operation>
        ELSE 1
    END)
 from table_x;

如上述查询所示,我们使用 case 语句和 ELSE 子句。这就是在 MySQL 中执行 IF ELSE 语句的方式。

让我们从 student_details 表中过滤数据,确保在 stu_id 大于 3 时只打印学生的姓氏而不是名字。否则,如果 stu_id 小于或等于 3,我们将打印名字。

我们可以使用以下查询来实现这一点。

select stu_id, 
    (
    CASE 
        WHEN stu_id <= 3 THEN stu_firstName
        ELSE stu_lastName
    END) AS filtered_data
 from student_details;

输出:

stu_id	filtered_data
1		Preet
2		Rich
3		Veron
4		Jos
5		Shah
6		Parker
7		Miller
注意
在上面的代码中,我们在 MySQL 中使用别名 filtered_dataAS 关键字来增加可读性。

CASE ELSE 技术的替代方法是存储过程。可以使用 IF ELSE 块创建存储过程,但是这种方法效率非常低,并且 case 最适用于类似于上面讨论的用例。

因此,在 case 语句的帮助下,我们可以有效地实现来自任何其他编程语言的 IF ELSE 语句预期的功能,以过滤 MySQL 中的数据。

Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub