IN操作符

IN操作符允许我们在WHERE子句中规定多个值。 这个操作符可以让我们在表中选取有一定规律的特定值,比如多个同样的订单选取最新的一个。

SQL IN 语法

1
2
3
SELECT 列名
FROM 表明
WHERE 列名 IN (value1,value2,...)

例子

简单的例子网上有,这里说一个复杂点的例子

image.png 有如上图所示的表

查询要求

1.我们要在指定chain_id上只查询一条时间最新的数据。比如ID 4和5 chain_id都为4,但是我们只能显示7月3日的ID为5的数据。 2.这条数据的on_off如果为0我们是不抽取这条数据出来的。

1
2
3
4
5
6
7
SELECT *
FROM file 
WHERE created_at in (
SELECT MAX(created_at)
FROM file WHERE chain_id in (1,2,3,4) && on_off <> 0
GROUP BY chain_id
);

查询结果

image.png

SQL语句的解析

上面使用了两个WHERE…IN,第一层我们想找时间最大的数据条目,第二层我们要求同时这个数据是我们的制定的chain_id,并且on_off不能为0 。同时满足三个条件得出我们的结果。 实际上是先找出了指定chain_id上on_off不为0的数据,然后再从这个数据集当中找到指定chain_id时间最大的那些数据。