SQL ANY, ALL运算符
在SQL中,运算符的意义与数学运算符相同。它们是用于执行比较或逻辑操作的关键字。在SQL中,有四种类型的运算符。算术运算符、比较运算符、逻辑运算符和位运算符。
SQL ANY和ALL运算符 用于在子查询返回的一组值与单个值之间进行比较。这些是逻辑运算符。
ANY和ALL运算符必须先于标准比较运算符(如>、>=、<、<=、=、<>、!=
),后面跟着一个子查询。ANY和ALL的主要区别在于,如果子查询中的任何值满足条件,ANY返回true,而ALL则返回true。
SQL ANY运算符
ANY运算符用于验证查询的任意一条记录是否满足所需的条件。
如果给定条件对于指定范围内的任何值都满足,则此运算符返回TRUE。如果指定范围内的任何值都不满足给定条件,此运算符返回false。您还可以与此运算符一起使用另一个查询(子查询)。
语法
SQL – ANY运算符的基本语法如下-
其中,
- column_name 是主查询中的列名。
-
operator 是比较运算符,如=,<,>,<=,>=或<>。
-
subquery 是一个SELECT语句,返回一个列的值。
使用>
运算符的ANY
通常,ANY运算符用于将一个值与子查询返回的一组值进行比较,在这种情况下,我们可以使用它与 > (大于)运算符一起验证特定列值是否大于子查询返回的任何记录的列值。
示例
为了更好地理解,让我们考虑包含客户的个人详细信息的CUSTOMERS表,包括他们的姓名、年龄、地址和薪水等,如下所示−
现在,使用以下INSERT语句将值插入到这个表中:
表格将如下所示创建-
现在,让我们尝试列举出工资大于32岁顾客的任何顾客的工资详细信息,即在这种情况下是Chaitali,Hardik,Komal和Muffy。
输出
得到的结果如下:
使用<
运算符的ANY
类似于“>”运算符,我们可以使用“<”(小于)运算符与ANY一起使用,以验证特定列值是否小于子查询返回的记录中的任何列值。
示例
在这里,我们试图找到在CUSTOMERS表中先前创建的任何薪水 小于 所有顾客薪水的平均薪水的不同年龄的客户。
输出
在执行上述查询时,我们得到以下输出结果 −
任何与 =
运算符
当我们使用 =
(等于)运算符与任何一起使用时,它会验证特定列的值是否等于子查询返回的任何记录的列值。
示例
在下面的查询中,我们尝试返回所有年龄 等于 以“K”开头的任何客户姓名的客户的详细信息。
输出
生成的结果如下 –
SQL – ALL运算符
ALL运算符返回SELECT语句的所有记录。
- 如果给定的条件对于范围中的所有值都满足,则返回TRUE。
-
它总是返回一个布尔值。
-
它与SQL查询中的SELECT,WHERE和HAVING语句一起使用。
-
子查询返回的值的数据类型必须与外部查询表达式的数据类型相同。
语法
SQL – ALL运算符的基本语法如下:
其中,
- column_name - 是主查询中的一个列的名称。
-
operator - 是一个比较运算符,如 =、<、>、<=、>= 或 <>。
-
subquery - 是返回单个列值的SELECT语句。
现在,让我们看一些SQL – ALL运算符的示例。
带WHERE语句的ALL
当我们在WHERE子句中使用ALL运算符时,它根据指定的条件过滤子查询的结果。
SQL中的WHERE子句用于根据特定条件从查询中筛选行。它作用于表中的各个行,允许您指定查询返回的数据中每行必须满足的条件。
示例
如果我们考虑上面创建的customers表,以下查询返回所有薪水不等于任何年龄为25的客户薪水的客户的详细信息 –
输出
上述查询的输出如下所示:
全部使用HAVING语句
在SQL中, ALL 运算符也可以与HAVING子句一起使用,根据适用于组中所有聚合值的条件过滤GROUP BY查询的结果。
示例
以下SQL查询用于获取工资 小于 平均工资的所有客户的详细信息 –
输出
上述查询的输出结果如下:
注意 − 在SQL Server中,每当使用聚合函数时,SELECT语句中使用的表的所有列都必须在GROUP BY子句中出现,以根据使用的聚合函数对表进行汇总。