在本教學中,您將學習如何使用SQL IN
運算符將列中的值與一組值進行比較。
SQL IN運算符簡介
IN
運算符是一個邏輯運算符,用於將值與一組值進行比較。 如果值在值集內,則IN
運算符返回true
。 否則,它返回false
或unknown
。
以下是IN
運算符的語法:
expression IN (value1,value2,...)
IN
運算符通常用於SELECT,UPDATE或DELETE語句的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...
請注意,如果列表中的任何值(value1
,value2
,...
)為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
,9
或10
的所有員工,請使用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
,9
或10
的所有員工,請使用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
運算符來測試值是否在值列表或子查詢中的條件。
上一篇:
SQL Between運算符
下一篇:
SQL Like運算符