- SQL教程
- SQL - 主页
- SQL - 概述
- SQL - RDBMS 概念
- SQL - 数据库
- SQL - 语法
- SQL - 数据类型
- SQL - 运算符
- SQL - 表达式
- SQL数据库
- SQL-创建数据库
- SQL - 删除数据库
- SQL - 选择数据库
- SQL - 重命名数据库
- SQL - 显示数据库
- SQL-备份数据库
- SQL表
- SQL - 创建表
- SQL - 显示表
- SQL - 重命名表
- SQL - 截断表
- SQL - 克隆表
- SQL - 临时表
- SQL - 更改表
- SQL - 删除表
- SQL - 删除表
- SQL - 约束
- SQL查询
- SQL - 插入查询
- SQL - 选择查询
- SQL - 选择进入
- SQL - 插入选择
- SQL - 更新查询
- SQL - 删除查询
- SQL - 对结果进行排序
- SQL 视图
- SQL - 创建视图
- SQL - 更新视图
- SQL - 删除视图
- SQL - 重命名视图
- SQL 运算符和子句
- SQL-Where 子句
- SQL - 顶部子句
- SQL - 不同子句
- SQL - Order By 子句
- SQL - Group By 子句
- SQL-Having 子句
- SQL - 与与或
- SQL - 布尔(位)运算符
- SQL - LIKE 运算符
- SQL - IN 运算符
- SQL - ANY、ALL 运算符
- SQL - EXISTS 运算符
- SQL-案例
- SQL - NOT 运算符
- SQL - 不等于
- SQL - 为空
- SQL - 不为空
- SQL - 非空
- SQL - BETWEEN 运算符
- SQL - UNION 运算符
- SQL - UNION 与 UNION ALL
- SQL - 相交运算符
- SQL - EXCEPT 运算符
- SQL - 别名
- SQL 连接
- SQL - 使用联接
- SQL-内连接
- SQL-左连接
- SQL-右连接
- SQL-交叉连接
- SQL-全连接
- SQL-自连接
- SQL - 删除连接
- SQL - 更新连接
- SQL - 左连接与右连接
- SQL - 联合与连接
- SQL 键
- SQL - 唯一键
- SQL - 主键
- SQL-外键
- SQL - 复合键
- SQL - 备用键
- SQL索引
- SQL - 索引
- SQL - 创建索引
- SQL - 删除索引
- SQL - 显示索引
- SQL-唯一索引
- SQL - 聚集索引
- SQL - 非聚集索引
- 高级SQL
- SQL - 通配符
- SQL - 注释
- SQL-注入
- SQL-托管
- SQL - 最小值和最大值
- SQL - 空函数
- SQL - 检查约束
- SQL - 默认约束
- SQL-存储过程
- SQL - NULL 值
- SQL - 事务
- SQL - 子查询
- SQL - 处理重复项
- SQL - 使用序列
- SQL-自动递增
- SQL - 日期和时间
- SQL-游标
- SQL - 公用表表达式
- SQL - 分组依据与排序依据
- SQL - IN 与 EXISTS
- SQL——数据库调优
- SQL 函数参考
- SQL - 日期函数
- SQL - 字符串函数
- SQL - 聚合函数
- SQL - 数字函数
- SQL - 文本和图像函数
- SQL - 统计函数
- SQL - 逻辑函数
- SQL - 游标函数
- SQL-JSON 函数
- SQL - 转换函数
- SQL - 数据类型函数
- SQL 有用资源
- SQL - 问题与解答
- SQL - 快速指南
- SQL - 有用的函数
- SQL - 有用的资源
- SQL - 讨论
SQL - ANY、ALL 运算符
SQL ANY 和 ALL运算符用于在单个值和子查询返回的一系列值之间执行比较。
ANY 和 ALL 运算符前面必须是标准比较运算符,即 >、>=、<、<=、=、<>、!=,后面是子查询。ANY 和 ALL 之间的主要区别在于,如果任何子查询值满足条件,ANY 将返回 true,而如果所有子查询值满足条件,ALL 将返回 true。
SQL ANY 运算符
ANY 运算符用于验证查询的任何单个记录是否满足所需条件。
如果范围内的任何值满足给定条件,则此运算符返回 TRUE。如果指定范围内的值都不满足给定条件,则该运算符返回 false。您还可以与此运算符一起使用另一个查询(子查询)。
句法
SQL - ANY 运算符的基本语法如下 -
Column_name operator ANY (subquery);
在哪里,
column_name是主查询中列的名称。
运算符是比较运算符,例如 =、<、>、<=、>= 或 <>。
子查询是返回单列值的 SELECT 语句。
任何带有“>”运算符的
通常,ANY 运算符用于将一个值与子查询返回的一组值进行比较,在这种情况下,我们可以将其与>(大于)运算符一起使用来验证特定列值是否大于任何列值子查询返回的记录的数量。
例子
为了更好地理解它,让我们考虑一下 CUSTOMERS 表,其中包含客户的个人详细信息,包括姓名、年龄、地址和工资等,如下所示 -
CREATE TABLE CUSTOMERS ( ID INT NOT NULL, NAME VARCHAR (20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
现在,使用 INSERT 语句将值插入到该表中,如下所示 -
INSERT INTO CUSTOMERS VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ), (2, 'Khilan', 25, 'Delhi', 1500.00 ), (3, 'Kaushik', 23, 'Kota', 2000.00 ), (4, 'Chaitali', 25, 'Mumbai', 6500.00 ), (5, 'Hardik', 27, 'Bhopal', 8500.00 ), (6, 'Komal', 22, 'Hyderabad', 4500.00 ), (7, 'Muffy', 24, 'Indore', 10000.00 );
该表将创建如下 -
ID | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
1 | 拉梅什 | 32 | 艾哈迈达巴德 | 2000.00 |
2 | 基兰 | 25 | 德里 | 1500.00 |
3 | 考希克 | 23 | 科塔 | 2000.00 |
4 | 柴塔利 | 25 | 孟买 | 6500.00 |
5 | 哈迪克 | 27 | 博帕尔 | 8500.00 |
6 | 科马尔 | 22 | 海得拉巴 | 4500.00 |
7 | 莫菲 | 24 | 印多尔 | 10000.00 |
现在,让我们列出所有工资高于年龄为32 岁的客户的工资的所有客户的详细信息,即本例中的 Chaitali、Hardik、Komal 和 Muffy -
SELECT * FROM CUSTOMERS WHERE SALARY > ANY (SELECT SALARY FROM CUSTOMERS WHERE AGE = 32);
输出
得到的结果如下 -
ID | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
4 | 柴塔利 | 25 | 孟买 | 6500.00 |
5 | 哈迪克 | 27 | 博帕尔 | 8500.00 |
6 | 科马尔 | 22 | 海得拉巴 | 4500.00 |
7 | 莫菲 | 24 | 印多尔 | 10000.00 |
带有 '<' 运算符的 ANY
与“>”运算符类似,我们可以将“<”(小于)运算符与 ANY 一起使用来验证特定列值是否小于子查询返回的任何记录的列值。
例子
在这里,我们发现客户的不同/不同年龄的工资低于先前创建的 CUSTOMERS 表中所有客户的平均工资 -
SELECT DISTINCT AGE FROM CUSTOMERS WHERE SALARY < ANY (SELECT AVG(SALARY) FROM CUSTOMERS);
输出
执行上述查询时我们得到以下输出 -
年龄 |
---|
32 |
25 |
23 |
22 |
任何带有“=”运算符的
当我们将=(等于)运算符与 ANY 一起使用时,它会验证特定列值是否等于子查询返回的任何记录的列值。
例子
在下面给出的查询中,我们检索年龄等于任何名称以“K”开头的客户的年龄的所有客户的详细信息-
SELECT * FROM CUSTOMERS WHERE AGE = ANY (SELECT AGE FROM CUSTOMERS WHERE NAME LIKE 'K%');
输出
产生的结果如下 -
ID | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
2 | 基兰 | 25 | 德里 | 1500.00 |
3 | 考希克 | 23 | 科塔 | 2000.00 |
4 | 柴塔利 | 25 | 孟买 | 6500.00 |
6 | 科马尔 | 22 | 海得拉巴 | 4500.00 |
SQL - ALL 运算符
SQL ALL 运算符返回 SELECT 语句的所有记录。
如果范围内的所有值都满足给定条件,则返回 TRUE。
它始终返回一个布尔值。
它与 SQL 查询中的 SELECT、WHERE 和 HAVING 语句一起使用。
子查询返回值的数据类型必须与外部查询表达式的数据类型相同。
句法
SQL ALL 运算符的基本语法如下 -
Column_name operator ALL (subquery);
在哪里,
column_name - 是主查询中列的名称。
运算符- 是比较运算符,例如 =、<、>、<=、>= 或 <>。
子查询- 是返回单列值的 SELECT 语句。
ALL 与 WHERE 语句
当我们将 ALL 运算符与 WHERE 子句一起使用时,它会根据指定的条件过滤子查询的结果。
SQL 中的 WHERE 子句用于根据特定条件过滤查询中的行。它对表中的各个行进行操作,并允许您指定查询返回的数据中的每一行必须满足的条件。
例子
如果我们考虑上面创建的 CUSTOMERS 表,以下查询将返回工资不等于年龄为 25 的任何客户的工资的所有客户的详细信息-
SELECT * FROM CUSTOMERS WHERE SALARY <> ALL (SELECT SALARY FROM CUSTOMERS WHERE AGE = 25);
输出
上述查询的输出如下 -
ID | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
1 | 拉梅什 | 32 | 艾哈迈达巴德 | 2000.00 |
3 | 考希克 | 23 | 科塔 | 2000.00 |
5 | 哈迪克 | 27 | 博帕尔 | 8500.00 |
6 | 科马尔 | 22 | 海得拉巴 | 4500.00 |
7 | 莫菲 | 24 | 印多尔 | 10000.00 |
ALL 带有 HAVING 子句
在 SQL 中,ALL运算符还可以与 HAVING 子句结合使用,根据适用于组中所有聚合值的条件来筛选 GROUP BY 查询的结果。
例子
以下 SQL 查询用于获取所有工资低于平均工资的客户的详细信息 -
SELECT NAME, AGE, ADDRESS, SALARY FROM CUSTOMERS GROUP BY AGE, SALARY HAVING SALARY < ALL (SELECT AVG(SALARY) FROM CUSTOMERS);
输出
上述查询的输出如下 -
ID | 姓名 | 年龄 | 地址 | 薪水 |
---|---|---|---|---|
1 | 拉梅什 | 32 | 艾哈迈达巴德 | 2000.00 |
2 | 基兰 | 25 | 德里 | 1500.00 |
3 | 考希克 | 23 | 科塔 | 2000.00 |
6 | 科马尔 | 22 | 海得拉巴 | 4500.00 |