SQL IN 运算符根据特定值列表过滤数据。一般来说,我们只能使用一个条件WHEN 子句,但是 IN 运算符允许我们指定多个值。
在这篇文章中,我们将了解SQL 中的 IN 运算符通过理解其语法和示例。
IN 运算符
SQL 中的 IN 运算符用于指定多个值/sub-queriesWHERE 条款。它提供了一种简单的方法来处理多个OR 状况。
我们只在 WHERE 子句中传递单个条件,但是有时我们需要根据多个条件选择数据。对于这种情况,使用 IN 运算符。
Note: If any of the conditions are passed using the IN operator, they will be considered true
SQL IN 语法
IN 运算符的语法如下:
SELECT column_name FROM table_name
WHERE condition IN (condition_value1, condition_value2 …..);
在这里,我们选择列column_name 从表中table_name 在所有条件中检查条件condition_values通过了IN 运算符.
演示 SQL 数据库
我们将在下面的示例中使用以下 SQL 表:
名称 | 名称 | 社会保障号 | 日期 | 地址 | 性别 | 薪水 |
---|---|---|---|---|---|---|
Chiranjeev | Singh | 1 | 2002-07-31 | Delhi | M | 1111789.00 |
Harry | Stark | 2 | 1990-07-31 | Delhi | M | 3333.00 |
Meghna | Gururaani | 5 | 2002-04-04 | Almora | F | 3433.00 |
Aniket | Bhardwaj | 6 | 2001-05-05 | Ponta | M | 56564.00 |
Vritti | Goel | 7 | 2002-03-05 | Delhi | F | 7565.00 |
Aashish | Kumar | 8 | 2002-08-04 | Himachal | M | 44657.00 |
Siddharth | Chaturvedi | 9 | 2003-11-10 | Lucknow | M | 244322.00 |
您可以使用这些查询创建下表:
CREATE TABLE Employee (
Fname VARCHAR(50),
Lname VARCHAR(50),
Ssn INT,
Bdate DATE,
Address VARCHAR(100),
Sex CHAR(1),
Salary DECIMAL(10, 2)
);
INSERT INTO Employee (Fname, Lname, Ssn, Bdate, Address, Sex, Salary) VALUES
('Chiranjeev', 'Singh', 1, '2002-07-31', 'Delhi', 'M', 1111789.00),
('Harry', 'Stark', 2, '1990-07-31', 'Delhi', 'M', 3333.00),
('Meghna', 'Gururaani', 5, '2002-04-04', 'Almora', 'F', 3433.00),
('Aniket', 'Bhardwaj', 6, '2001-05-05', 'Ponta', 'M', 56564.00),
('Vritti', 'Goel', 7, '2002-03-05', 'Delhi', 'F', 7565.00),
('Aashish', 'Kumar', 8, '2002-08-04', 'Himachal', 'M', 44657.00),
('Siddharth', 'Chaturvedi', 9, '2003-11-10', 'Lucknow', 'M', 244322.00);
SQL IN 运算符示例
让我们看一下 SQL 中 IN 运算符的一些示例并了解其工作原理。
示例 1:
SQL 查询获取地址在 Delhi 和喜马偕尔邦的员工的 Fname 和 Lname
询问:
SELECT Fname, Lname FROM employee WHERE Address IN ('Delhi','Himachal');
输出:
名称 | 名称 |
---|---|
Chiranjeev | Singh |
Harry | Stark |
Vritti | Goel |
Aashish | Kumar |
在此查询中,我们获取了地址为 Delhi 或 Himachal 的所有员工的 Fname 和 Lname。为此,我们使用 IN 运算符将这些值传递给 WHERE 子句。
示例 2:SQL IN 和 NOT IN 运算符
我们可以使用SQL IN 与NOT从我们的结果中排除指定的数据。
询问:
SELECT Fname FROM employee WHERE Address NOT IN ('Delhi', 'Lucknow');
输出:
名称 |
---|
Meghna |
Aniket |
Aashish |
在这里,我们创建了一个查询来获取地址既不是 Delhi 也不是勒克瑙的所有员工的 Fname。我们使用 NOT 运算符和 IN 来排除这些值。
示例 3:
我们使用了具有显式条件值的 IN 运算符。但是,我们可以使用 IN 运算符从另一个查询中选择条件值。为了演示这一点,我们将使用数据库中的另一个表 manager。表的内容如下所示。
社会保障号 | 部门 |
---|---|
5 | Sales |
1 | Technical |
现在,我们将编写一个查询来获取所有担任经理的员工的详细信息。这可以通过使用带有 IN 运算符的嵌套 SELCT 查询来完成。
询问:
SELECT * FROM employee WHERE Ssn IN (SELECT Ssn FROM manager);
输出:
名称 | 名称 | 社会保障号 | 日期 | 地址 | 性别 | 薪水 |
---|---|---|---|---|---|---|
Chiranjeev | Singh | 1 | 2002-07-31 | Delhi | M | 1111789.00 |
Meghna | Gururaani | 5 | 2002-04-04 | Almora | F | 3433.00 |
在这里,我们从经理表中选择了所有经理的 Ssn,然后,我们将此查询的结果传递给 IN 运算符中的主查询,该查询将获取具有与从经理表中获取的相同 Ssn 的所有员工的详细信息。嵌套查询。
有关 SQL IN 运算符的要点:
- The SQL IN operator allows you to specify multiple values in a WHERE clause.
- It checks if a specified value matches any value in a list.
- It simplifies querying for records that match multiple criteria without needing to use multiple OR conditions.
- The syntax is straightforward:
WHERE column_name IN (value1, value2, ...)
.- It is commonly used with SELECT, INSERT, UPDATE, and DELETE statements for filtering or updating data based on multiple values.
- Using the IN operator can make SQL queries more concise and readable.
相关用法
- SQL IS NOT NULL用法及代码示例
- SQL IS NULL用法及代码示例
- SQL Datetime转Date用法及代码示例
- SQL Date转Datetime用法及代码示例
- SQL NUMERIC转NVARCHAR用法及代码示例
- SQL LTRIM()用法及代码示例
- SQL UPPER()用法及代码示例
- SQL RTRIM()用法及代码示例
- SQL FLOAT转NVARCHAR用法及代码示例
- SQL Datetime转Epoch用法及代码示例
- SQL Epoch Time转Date用法及代码示例
- SQL Datetime转String用法及代码示例
- SQL VARCHAR转INT用法及代码示例
- SQL NOT用法及代码示例
- SQL NOT EQUAL用法及代码示例
- SQL LIKE用法及代码示例
- SQL DROP和TRUNCATE的区别用法及代码示例
- SQL Server CHARINDEX()用法及代码示例
- SQL Server DIFFERENCE()用法及代码示例
- SQL Server IIF()用法及代码示例
- SQL Server ASCII()用法及代码示例
- SQL Server LOG()用法及代码示例
- SQL Server LOG10()用法及代码示例
- SQL Server ATN2()用法及代码示例
注:本文由纯净天空筛选整理自owl0223大神的英文原创作品 SQL IN Operator。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。