当前位置:首页 » 操作系统 » 数据库any

数据库any

发布时间: 2023-06-09 15:55:14

数据库当中:如果子查询中返回的是单列多值,则必须在子查询前使用关键字all或any

我来回答一下,这个问题不好说清楚....

学生表

-- 查询1、查询出 年龄 = 17 的所有学生

select t.* from学生表 t where t.年龄 = 17;

-- 查询2、查询出 年龄 = 17或者 = 18的所有学生

select t.* from 学生表 t where t.年龄in (17, 18);

-- 查询3、查询出 性别 = 男 的所有学生,这里因为子查询“学生表 t2”只有一条记录满足条件(即单列单行),所以查询不会报错

select t.* from 学生表 t where t.年龄 = (

select t2.年龄

from 学生表 t2 where t2.性别 = '男'

);

-- 查询4、查询出 年龄 = 17 的所有学生,这里因为子查询 “学生表 t2” 有两条数据符合条件(即单列多行),而 “t.性别 =” 只能等于某一个给定的值,参考 “查询1” ,所以执行查询会报错;这里把 =替换为 =any 或者 in 就可以正常查询,因为 =any 和 in 是告诉 “t.性别” 要找的数据必须在我范围内;而 <> any 和 not in 则表示取反的意思,告诉 “t.性别” 要找的数据必须排除我给你的范围。

select t.* from 学生表 t where t.性别 = (

select t2.性别

from 学生表 t2 where t2.年龄 = 17

);

-- ANY 和 ALL 的具体用法,这里不再赘述。。。。

-- 查询5、多列多值,参考查询4,子查询 “学生表 t2” 满足条件的有两条,如下查询:

select t.* from 学生表 t where t.年龄 || t.性别=any (

select t2.年龄 || t2.性别

from 学生表 t2 where t2.性别 = '男'

);

注1:其实 ANY 和 ALL 不涉及什么多行多列,查询5只是一种另类的解决方案。

注2:“||” 双数线表示 在 ORACLE 数据库中用来做合并的关键字符。

总结:

首先,请不要在查询1、2、3、4、5上过于纠结,说什么我可以用更简单的SQL实现你的查询1、2、3、4、5,我这里仅仅是为了举例说明。

select t.* from 学生表 t where t.年龄 = 17;

= 后面可以是一个 特定的值,可以是一个 子查询等等,但是需要保证 = 后面的任何运算或查询只返回一个值,不然SQL是无法执行的;

而 any 和 all 以及 in,表示的是一个数据范围,即单列多行,而使用 双竖线 是把 多列合并为一列来处理,最终还是模拟的单列多行。

② 数据库比较操作符>any表示什么意思、

>any可以理解为大于子查询中返回的任意一个值,因此只要大于最小值即可。满意请采纳。

热点内容
phpqq分享 发布:2025-04-09 09:02:45 浏览:353
sql虚拟列 发布:2025-04-09 08:59:36 浏览:84
ps入门笔记本电脑需要什么配置 发布:2025-04-09 08:56:34 浏览:277
abaqus需要什么配置 发布:2025-04-09 08:53:09 浏览:734
vba查询文件夹 发布:2025-04-09 08:51:38 浏览:447
图的存储与遍历 发布:2025-04-09 08:50:39 浏览:61
拉杆箱的密码锁忘记密码了怎么办 发布:2025-04-09 08:30:54 浏览:363
手机脚本助手 发布:2025-04-09 08:30:53 浏览:461
phpapache安装 发布:2025-04-09 08:30:12 浏览:439
安卓手机线插头叫什么 发布:2025-04-09 08:22:59 浏览:412