MySQL基础知识——IN

164 阅读3分钟

点击上方SQL数据库开发,关注获取SQL视频教程\

SQL专栏

SQL基础知识汇总

SQL高级知识汇总

IN的作用

IN可以在WHERE自己中指定多个值,是多个OR条件的简写形式。

IN的语法

SELECT column_name(s) FROM table_name 

WHERE column_name [NOT] IN (value1, value2, ...);

或者

SELECT column_name(s) FROM table_name 

WHERE column_name [NOT] IN (SELECT STATEMENT);

第一种语法是直接在IN的括号里,手动输入多个你需要筛选的值;

第二种语法则是将括号里的子查询的结果,作为你筛选数据的值。

示例数据

我们以表customers为演示数据,内容如下:

表customers

IN的实例

希望从表customers中查询出城市为"北京","上海","广州"的客户信息,可以这样写:

SELECT * FROM customers
WHERE `城市` IN ('北京','上海','广州')

结果为:\

其实我们也可以使用OR来完成,下面的语句与上面的语句功能相同:

SELECT * FROM customers
WHERE `城市` ='北京'
OR `城市`='上海'
OR `城市`='广州'

但是用OR代码就看着会比较冗长,所以如果遇到相同字段要取多个值的,建议使用IN来书写。\

NOT IN的实例

有相等,那对应的就会有不相等,IN也如此,它结合NOT就可以表示不存在的功能。

希望从表customers中查询出城市为"北京","上海","广州"的客户信息,可以这样写:

SELECT * FROM customers
WHERE `城市` NOT IN ('北京','上海','广州')

结果为:
\

大家注意城市这一列,我们查询出来的结果中不包含"北京","上海","广州",正是我们需要查找的数据,这就是NOT IN的功能。

IN子查询实例

有如下一张供应商Suppliers表,示例如下:

希望能够找到customers表中与供应商处在同一个城市的客户,我们可以这样写:

SELECT * FROM Customers
WHERE 城市 IN (SELECT 城市 FROM Suppliers);

结果为:\

IN后面接的就是一个子查询,后面我们会详细介绍。这里的子查询的作用就是查询出供应商这张表里的城市信息,我们可以看到有"上海","南京","西安"这三个城市信息。

这时候IN就通过这三个城市的信息,去过滤表customers中的客户信息。只要customers表里的客户城市在这三个城市中,就是我们需要的数据了。

这里你可以理解为IN就是取两个表都有的数据才会被查询出来。

——End——
后台回复关键字:1024,获取一份精心整理的技术干货
后台回复关键字:进群,带你进入高手如云的交流群。
推荐阅读
刚刚用华为鸿蒙跑了个“hello world”!

SQL学习路线图,首次公开

思科前员工删库跑路,损失达 1600 多万

孙悟空无姓无名的时候,阎王生死簿是怎么写的呢?

同济版《线性代数》引发激烈争议
这是一个能学到技术的公众号,欢迎关注

点击「阅读原文」了解SQL训练营