• 如何使用SQL IN运算符将列中的值与一组值进行比较


    在本教程中,您将学习如何使用SQL IN运算符将列中的值与一组值进行比较。

    SQL IN运算符简介

    IN运算符是一个逻辑运算符,用于将值与一组值进行比较。 如果值在值集内,则IN运算符返回true。 否则,它返回falseunknown

    以下是IN运算符的语法:

    expression IN (value1,value2,...)
    

    IN运算符通常用于SELECTUPDATEDELETE语句的WHERE子句中。 它也广泛用于子查询中。

    使用IN运算符的条件可以使用一个或多个OR运算符重写,如下所示:

    expression = value1 OR expression = value2 OR ...
    

    要否定IN运算符的结果,请使用NOT运算符:

    expression NOT IN (value1, value2,...)
    

    如果表达式与列表中的任何值都不匹配,则NOT IN运算符返回true,否则返回false

    同样,可以使用AND运算符重写NOT IN运算符,如下所示:

    expression != value1 AND expression != value2 AND...
    

    请注意,如果列表中的任何值(value1value2...)为null,则IN运算符不返回任何行。

    1. SQL IN示例

    我们将使用示例数据库中的employees表来演示IN运算符的功能。更多教程请访问http://www.manongzj.com

    mysql> DESC employees;
    +---------------+--------------+------+-----+---------+----------------+
    | Field         | Type         | Null | Key | Default | Extra          |
    +---------------+--------------+------+-----+---------+----------------+
    | employee_id   | int(11)      | NO   | PRI | NULL    | auto_increment |
    | first_name    | varchar(20)  | YES  |     | NULL    |                |
    | last_name     | varchar(25)  | NO   |     | NULL    |                |
    | email         | varchar(100) | NO   |     | NULL    |                |
    | phone_number  | varchar(20)  | YES  |     | NULL    |                |
    | hire_date     | date         | NO   |     | NULL    |                |
    | job_id        | int(11)      | NO   | MUL | NULL    |                |
    | salary        | decimal(8,2) | NO   |     | NULL    |                |
    | manager_id    | int(11)      | YES  | MUL | NULL    |                |
    | department_id | int(11)      | YES  | MUL | NULL    |                |
    +---------------+--------------+------+-----+---------+----------------+
    10 rows in set
    

    要查找工作ID为8,910的所有员工,请使用IN运算符,如下所示:

    SELECT
        employee_id, first_name, last_name, job_id
    FROM
        employees
    WHERE
        job_id IN (8, 9, 10)
    ORDER BY
        job_id;
    

    执行上面示例代码,得到以下结果 -

    要查找工作ID不是8,910的所有员工,请使用NOT IN运算符,如下所示:

    SELECT
        employee_id, first_name, last_name, job_id
    FROM
        employees
    WHERE
        job_id NOT IN (8, 9, 10)
    ORDER BY
        job_id;
    

    SQL IN带有子查询示例

    子查询是嵌套在另一个查询中的查询。 以下查询查找市场营销 和IT部门的部门ID:

    SELECT 
        department_id
    FROM
        departments
    WHERE
        department_name = '市场营销'
            OR department_name = 'IT';
    

    执行上面示例代码,得到以下结果 -

    +---------------+
    | department_id |
    +---------------+
    |             2 |
    |             6 |
    +---------------+
    2 rows in set
    

    该查询返回两个部门的列表。 可以将此列表提供给IN运算符,以查找在市场营销 和IT部门工作的所有员工。

    SELECT
        employee_id, first_name, last_name, salary
    FROM
        employees
    WHERE
        department_id IN (2, 6);
    

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

    要使它更简单,可以使用在第二个查询中嵌套第一个查询的子查询来实现:

    SELECT 
        employee_id, first_name, last_name, salary
    FROM
        employees
    WHERE
        department_id IN (SELECT 
                department_id
            FROM
                departments
            WHERE
                department_name = '市场营销'
                    OR department_name = 'IT')
    

    在本教程中,您已经学习了如何使用SQL IN运算符来测试值是否在值列表或子查询中的条件。

  • 相关阅读:
    js日期 操作
    c# 调用c++ dll
    多维数组与交错数组的转换
    c++多态
    c++ 指向类成员函数的函数指针
    c++虚析构函数的使用及其注意点
    c++模板实现 linq
    Php 常用类
    Php ORM 对象关系映射
    Php OpenID
  • 原文地址:https://www.cnblogs.com/myhomepages/p/15826243.html
Copyright © 2020-2023  润新知