7-15ALL、 ANY、SOME子查询

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表的别名。

原文地址:https://www.cnblogs.com/gcmwalker/p/6083432.html