首页 > 编程笔记 > MySQL笔记 阅读:17

MySQL IN和NOT IN的用法(附带实例)

MySQL 中的 IN 操作符用来查询满足指定范围内的条件的记录。

使用 IN 操作符,将所有检索条件用圆括号括起来,检索条件之间用逗号分隔开,只要满足条件范围内的一个值即为匹配项。

为了方便演示 IN 和 NOT IN 的用法,需要往数据表插入如下数据:
mysql> INSERT INTO fruits (f_id, s_id, f_name, f_price)
       VALUES('a1', 101,'apple',5.2),
       ('b1',101,'blackberry', 10.2),
       ('bs1',102,'orange', 11.2),
       ('bs2',105,'melon',8.2),
       ('t1',102,'banana', 10.3),
       ('t2',102,'grape', 5.3),
       ('o2',103,'coconut', 9.2),
       ('c0',101,'cherry', 3.2),
       ('a2',103, 'apricot',2.2),
       ('l2',104,'lemon', 6.4),
       ('b2',104,'berry', 7.6),
       ('m1',106,'mango', 15.7),
       ('m2',105,'xbabay', 2.6),
       ('t4',107,'xbababa', 3.6),
       ('m3',105,'xxtt', 11.6),
       ('b5',107,'xxxx', 3.6);

【实例 1】查询 s_id(水果供应商)为 101 和 102 的记录,SQL 语句如下:
SELECT s_id,f_name, f_price FROM fruits WHERE s_id IN (101,102) ORDER BY f_name;
查询结果如下:
+-------+------------+--------+
| s_id  | f_name     | f_price|
+-------+------------+--------+
| 101   | apple      | 5.20   |
| 102   | banana     | 10.30  |
| 101   | blackberry | 10.20  |
| 101   | cherry     | 3.20   |
| 102   | grape      | 5.30   |
| 102   | orange     | 11.20  |
+-------+------------+--------+

相反,可以使用关键字 NOT 来检索不在条件范围内的记录。

【实例 2】查询所有 s_id 不等于 101 也不等于 102 的记录,SQL 语句如下:
SELECT s_id, f_name, f_price FROM fruits WHERE s_id NOT IN (101, 102) ORDER BY f_name;
查询结果如下:
+-------+--------+--------+
| s_id  | f_name | f_price |
+-------+--------+---------+
| 103   | apricot| 2.20    |
| 104   | berry  | 7.60    |
| 103   | coconut| 9.20    |
| 104   | lemon  | 6.40    |
| 106   | mango  | 15.70   |
| 105   | melon  | 8.20    |
| 107   | xbababa| 3.60    |
| 105   | xbabay | 2.60    |
| 105   | xxtt   | 11.60   |
| 107   | xxxxx  | 3.60    |
+-------+--------+---------+
可以看到,该语句在 IN 关键字前面加上了 NOT 关键字,这使得查询的结果与实例 1 结果正好相反,实例 1 检索了 s_id 等于 101 和 102 的记录,而这里所要求查询的记录中 s_id 字段值不等于这两个值中的任何一个。

相关文章