数据库之子查询一(单行,多行,多列子查询)
子查询先执行括号里面的查询语句,然后将返回值赋值给外面的语句,再次进行查询。
根据查询结果的行数,将其分为单行子查询,多行子查询,多列子查询
一、单行子查询
select 字段1,字段2.........
from 表名
where 字段3>(<,=,<=,>=,!=,<>)
(
select 字段3
from 表名
where........
)
其中可以使用各种比较运算符(>,<,=,<=,>=,!=,<>)
二、多行子查询
1.in关键字
select 字段1,字段2.........
from 表名
where 字段3 in
(
select 字段3
from 表名
where........
)
此时会列出所有和括号里面的查询语句的返回值相同的记录
2.any关键字
select 字段1,字段2.........
from 表名
where 字段3 (>,<,=,<=,>=,!=,<>)any
(
select 字段3
from 表名
where........
)
这里的any需要和比较运算符共用
>any大于查询出来的任一返回值(大于最小值)
<any小于查询出来的任一返回值(小于最大值)
=any和in相同
<>any和!=any相同,即返回不等于查询任一值
..........
3.all关键字
select 字段1,字段2.........
from 表名
where 字段3 (>,<,=,<=,>=,!=,<>)all
(
select 字段3
from 表名
where........
)
>all大于查询出来的最大返回值(大于最大值)
<ally小于查询出来的最小返回值(小于最小值)
=all等于查询结果中的所有值
<>和!=不等于查询结果中的所有值
特别注意:等于号的两种情况很复杂,搞不清楚,标记
多列子查询:
多列子查询即使用两个以及多个字段条件进行查询
格式:
select 字段1,字段2,字段3.........
from 表1
where (dept,profession)=
(
select dept,profession
from 表1
where.........
)