数据库教程-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运算符的功能。

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; 

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

SQL In运算符

要查找工作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); 

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

SQL In运算符

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

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运算符来测试值是否在值列表或子查询中的条件。

  

从零到一,创造未来!跨零综合IT问题解决服务站,欢迎你的到来。Oracle数据库教程 sql教程 只为你绽放。

本文固定链接: http://kua0.com/2019/01/24/数据库教程-sql-in运算符/

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注