ALL:所有
ANY:部分
SOME:与ANY相同,使用ANY的地方都可以用SOME替换。
>ALL:父查询中列的值必须大于子查询返回的值列表的每一个值。
>ANY:父查询中的返回值必须大于子查询中的一个值。
=ANY:与IN等效:父查询中列的值必须在子查询中返回值列表存在。
<>ANY与NOT IN的区别:
<>ANY:父查询结果中的列的值与子查询返回值列表只要有一个,不相同就返回。
NOT IN:父查询的结果中的列的值必须不能在子查询值的列表中。
>ALL:
首先先查询两张表:
SELECT *FROM table1
SELECT *FROM table2
这是两个表中的数据。
SELECT *FROM table2 n>ALL(SELECT n FROM table1)
最后结果为4,因为只有4比子查询面的值都大。
>ANY:
SELECT *FROM table2 n>ANY(SELECT n FROM table1)
最后结果为3,4,这个指的是父查询中的哪些值比子查询中的值大。
也可以用:
SELECT *FROM table2 n>SOME(SELECT n FROM table1)
SELECT *FROM table2 n IN(SELECT n FROM table1)
SELECT *FROM table2 n=ANY(SELECT n FROM table1)
结果都一样。
<>ANY与IN:
SELECT *FROM table2 n<>ANY(SELECT n FROM table1)
SELECT *FROM table2 n IN(SELECT n FROM table1)
子查询:
任何使用表达式的地方都可以用子查询。
嵌套在SELECT 语句中的子查询:
语法:
SELECT (子查询)FROM 表名。
嵌套在FROM语句中的子查询:
SELECT ...FROM(子查询)AS表的别名。