美文网首页MySQL
(十二)子查询

(十二)子查询

作者: 一条IT | 来源:发表于2019-03-24 15:15 被阅读16次

    子查询需用括号包裹。

    from型

    from后要求是一个表,必须给子查询结果取个别名。
    
    • 简化每个查询内的条件。
      • from型需将结果生成一个临时表格,可用以原表的锁定的释放。
      • 子查询返回一个表,表型子查询。
        select * from (select * from tb where id>0) as subfrom where id>1;
    

    where型

    • 子查询返回一个值,标量子查询。
    • 不需要给子查询取别名。
    • where子查询内的表,不能直接用以更新。
        select * from tb where money = (select max(money) from tb);
    
    • 列子查询
      如果子查询结果返回的是一列。
      使用 in 或 not in 完成查询
      exists 和 not exists 条件
      如果子查询返回数据,则返回1或0。常用于判断条件。
                select column1 from t1 where exists (select * from t2);
    
    • 行子查询
      查询条件是一个行。
            select * from t1 where (id, gender) in (select id, gender from t2);
    
        行构造符:(col1, col2, ...) 或 ROW(col1, col2, ...)
        行构造符通常用于与对能返回两个或两个以上列的子查询进行比较。
    

    特殊运算符:

        != all()    相当于 not in
        = some()    相当于 in。any 是 some 的别名
        != some()   不等同于 not in,不等于其中某一个。
        all, some 可以配合其他运算符一起使用。
    

    相关文章

      网友评论

        本文标题:(十二)子查询

        本文链接:https://www.haomeiwen.com/subject/dzsuvqtx.html