MySQL NOT 运算符
MySQL NOT 运算符
NOT 运算符用于 WHERE 子句中,返回所有不匹配指定条件的记录。它将条件的结果从真反转为假,反之亦然。
以下 SQL 选取所有不是来自德国的客户:
实例
SELECT * FROM Customers WHERE NOT Country = 'Germany';
在上面的示例中,NOT 运算符与 = 运算符结合使用。
NOT 运算符也与其他运算符结合使用以排除数据,例如:
NOT LIKENOT BETWEENNOT INIS NOT NULLNOT EXISTS
NOT 语法
SELECT column1, column2, ... FROM table_name WHERE NOT condition;
演示数据库
以下是 Northwind 演示数据库中 Customers 表的部分片段:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
| 2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
| 3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
结合使用 AND、OR 和 NOT
你也可以将 AND、OR 和 NOT 运算符结合使用。
以下 SQL 选取国家为 Germany 且城市必须为 Berlin 或 Stuttgart 的所有客户(使用括号构成复杂表达式):
实例
SELECT * FROM Customers WHERE Country = 'Germany' AND (City = 'Berlin' OR City = 'Stuttgart');
以下 SQL 选取国家不是 Germany 也不是 USA 的所有客户:
实例
SELECT * FROM Customers WHERE NOT Country = 'Germany' AND NOT Country = 'USA';
NOT LIKE 运算符
NOT LIKE 运算符用于 WHERE 子句中,排除匹配指定字符模式的行。
常与 NOT LIKE 运算符一起使用的有两个通配符:
- 百分号
%- 表示零个、一个或多个字符 - 下划线
_- 表示单个字符
以下 SQL 选取所有不以字母 A 开头的客户:
实例
选取不以字母 A 开头的客户:
SELECT * FROM Customers WHERE CustomerName NOT LIKE 'A%';
NOT BETWEEN 运算符
NOT BETWEEN 运算符用于 WHERE 子句中,选取值落在指定包含范围之外的行。
NOT BETWEEN 运算符可与数值、文本或日期值一起使用。
以下 SQL 选取所有 CustomerID 不在 10 到 60 之间的客户:
实例
选取 customerID 不在 10 到 60 之间的客户:
SELECT * FROM Customers WHERE CustomerID NOT BETWEEN 10 AND 60;
NOT IN 运算符
NOT IN 运算符用于 WHERE 子句中,排除匹配指定列表或子查询结果集中任何值的行。
以下 SQL 选取所有 Country 不在 Paris 或 London 中的客户:
实例
选取不是来自巴黎或伦敦的客户:
SELECT * FROM Customers
WHERE City NOT IN ('Paris', 'London');
NOT GREATER THAN(不大于)
在 SQL 中,"不大于"条件通常使用标准的"大于或等于"(>=)运算符来表达。
以下 SQL 选取所有 CustomerID 不大于 50 的客户:
实例
选取 CustomerId 不大于 50 的客户:
SELECT * FROM Customers WHERE NOT CustomerID > 50;
NOT LESS THAN(不小于)
在 SQL 中,"不小于"条件通常使用标准的"小于或等于"(<=)运算符来表达。
以下 SQL 选取所有 CustomerID 不小于 50 的客户:
实例
选取 CustomerID 不小于 50 的客户:
SELECT * FROM Customers WHERE NOT CustomerId < 50;