SQL IN – SQL NOT IN
时间:2020-02-23 14:32:28 来源:igfitidea点击:
SQL IN运算符与WHERE子句一起使用,以提供多个值作为WHERE子句的一部分。
1. SQL IN
SQL IN运算符几乎就像在同一列上具有多个OR运算符一样。
让我们详细讨论一下SQL IN运算符。
有两种定义IN运算符的方法。
我们将在下面详细讨论这两种方式。
1.1)作为IN的一部分的多个值
语法:
SELECT Column(s) FROM table_name WHERE column IN (value1, value2, ... valueN);
使用上述语法,我们可以定义多个值作为IN运算符的一部分。
通过一些示例,我们将更详细地理解上述语法。
让我们考虑以下学生表格作为示例。
RollNo | StudentName | StudentGender | StudentAge | StudentPercent |
---|---|---|---|---|
1 | George | M | 14 | 85 |
2 | Monica | F | 12 | 88 |
3 | Jessica | F | 13 | 84 |
4 | Tom | M | 11 | 78 |
方案:获取12岁或者13岁学生的百分比。
查询:
SELECT StudentPercent FROM Student WHERE StudentAge IN ('12', '13');
输出:
StudentPercent |
---|
88 |
84 |
1.2)选择查询作为IN的一部分
语法:
SELECT Column(s) FROM table_name WHERE column IN (SELECT Statement);
使用上述语法,我们可以使用SQL SELECT语句作为IN运算符的一部分来提供值。
通过一些示例,我们将更详细地理解上述语法。
让我们考虑以下"产品和供应商"表作为示例。
产品表
ProductId | ProductName | ProductPrice |
---|---|---|
1 | Cookie | 10 |
2 | Cheese | 11 |
3 | Chocolate | 15 |
4 | Jam | 20 |
供应商表
ProductId | ProductName | SupplierName |
---|---|---|
1 | Cookie | ABC |
2 | Cheese | XYZ |
3 | Chocolate | ABC |
4 | Jam | XDE |
场景:获取供应商为ABC的产品的价格。
查询:
SELECT ProductPrice FROM Product WHERE ProductName IN (SELECT ProductName FROM Supplier WHERE SupplierName = "ABC");
输出:
ProductPrice |
---|
10 |
15 |
1.3)SQL嵌套IN
我们还可以在其他IN运算符内部使用IN。
为了更好地理解它,让我们考虑以下情况。
场景:获取供应商为ABC和XDE的产品的价格。
查询:
SELECT ProductPrice FROM Product WHERE ProductName IN (SELECT ProductName FROM Supplier WHERE SupplierName IN ( "ABC", "XDE" ));
输出
ProductPrice |
---|
10 |
15 |
20 |
2. SQL NOT IN
如果不满足作为IN运算符一部分提到的值,则使用SQL NOT IN运算符过滤结果。
让我们详细讨论一下SQL NOT IN运算符。
语法:
SELECT Column(s) FROM table_name WHERE Column NOT IN (value1, value2... valueN);
在上面的语法中,将考虑将IN子句中不满足的值用作结果。
让我们以先前定义的Student表为例。
方案:获取年龄不在12或者13岁的学生所占的百分比
询问
SELECT StudentPercent FROM Student WHERE StudentAge NOT IN ('12', '13');
输出:
StudentPercent |
---|
85 |
78 |
2.1)选择查询作为SQL NOT IN的一部分
语法:
SELECT Column(s) FROM table_name WHERE column NOT IN (SELECT Statement);
使用上述语法,我们可以使用SELECT语句作为IN运算符的一部分来提供值。
通过一些示例,我们将更详细地理解上述语法。
我们以先前定义的"产品和供应商"表为例。
场景:获取供应商不是ABC的产品的价格。
查询:
SELECT ProductPrice FROM Product WHERE ProductName NOT IN (SELECT ProductName FROM Supplier WHERE SupplierName = "ABC");