数据库之子查询一(单行,多行,多列子查询)

子查询先执行括号里面的查询语句,然后将返回值赋值给外面的语句,再次进行查询。
根据查询结果的行数,将其分为单行子查询,多行子查询,多列子查询

一、单行子查询

    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.........
    )
posted @ 2013-09-09 14:25  SoulReaper  阅读(3623)  评论(0编辑  收藏  举报