开发者社区> 问答> 正文

子查询

已解决

子查询

展开
收起
pandacats 2019-12-09 11:34:50 766 0
1 条回答
写回答
取消 提交回答
  • 采纳回答
        - 子查询需用括号包裹。
    -- 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 可以配合其他运算符一起使用。
    
    2019-12-09 11:35:11
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载