一、介绍
他们都需要配合=、>、<、<=、>=、<>来联合使用。
因此为了更好介绍,需要提前准备好测试数据。
|
数据如下:+------+
| num |
+------+
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
+------+
+------+
| num |
+------+
| 2 |
| 3 |
| 4 |
+------+
1.1 All
使用在查询过程中where之后使用,完成主表中每项数据在从表中所有的数据进行对比,对比成功则为true。
看看sql:select * from master_table WHERE num > all (select * from test_table);
+------+
| num |
+------+
| 5 |
+------+
先分析,主表第一项1与从表中的每一项(All)进行比较,并且每一项都必须满足OP(=、>、<、<=、>=、<>),满足后则该项1判断为true;相反,如果从表中有一项无法满足,则返回该项判断为false。
那么这里的第一项1,与从表中每一项对比,都是小于2、3、4,所以该项判断为false;再来看4,虽然4大于1、2、3,但是在对比4、5的时候无法满足,因此也判断为false;最后只有5比从表中所有项都大,因此通过判断为true。返回为5。
作为对比,看看下面的sql:select * from master_table WHERE num < all (select * from test_table);
+------+
| num |
+------+
| 1 |
+------+
根据上面的分析不难看出,只有1才能满足小于从表中所有数据。
1.2 Some/Any
Some和Any相同,与All相反,大致过程是在和从库中的数据开始一一对比的过程中,只要从库中有一项满足了对比条件,就返回true;否则返回false。
看看sql:select * from master_table WHERE num > some (select num from test_table);
select * from master_table WHERE num > any (select num from test_table);
+------+
| num |
+------+
| 3 |
| 4 |
| 5 |
+------+
对比过程中,主库的1、2无法满足条件,因为从库中的任意一项都比他们大。