• 嵌套集合


    1.去重复 instinct (可以理解为分组)

    select instinct 列 from 表名;//列相同的 合并只显示一条

    select instinct 列1,列2 from 表名;//如果是两个列  两个列的组合当做整体 只有当两个列同时满足值相同才合并显示

    select 列1,instinct 列2 from 表名;//语法错误

    2.分组 group by

    想要显示的最终结果只能是两种情况    分组条件   分组函数

    分组时候可能会产生与条件筛选相关的操作
       如果先进行条件筛选 后分组 where group-by   ,where优先级高于group by
       如果先进行分组 后进行筛选 group-by having,having用法与where一样,但优先级低于group by
       如果分析之后还需要进行排序 order-by 最后处理 

    3.嵌套
    将一条完整的SQL嵌套在另一条完整的SQL内部
    *1.可以将查询的结果当做条件 再次查询
    select * from student where chinese = (select max(chinese) from student);
    在这种情况下有可能 嵌套的子SQL查询的表格与当前的SQL不一致
    2.可以将查询的结果当做一张新的表格 表格基础上再次查询
    select * from (select sid,sname,ssex,sage from student) xxx;
    需要注意from后面的表格需要有名字 给表格起别名

    4.in,any,some,all     是否满足子集中的条件

    in(包含):where条件之后,列 in(值,值,值)。只要满足括号里的一个值就可以,默认=比较

    括号里可以是常量,也可以是sql查询到的结果

    select * from 表名 where 列 (not)in(值1,值2,。。。);

    select * from 表名 where 列 (not)in(select 列 from 表名);

    not in(不包含)

    以下三个关键字都只能用子集,不能用常量。

    any:满足查询子集中的某一个即可 >any   <any    =any(结果与in)   !=any

    some:与any完全一致
    all :满足查询子集中的全部才可以 >all <all =all !=all(结果与not in)

    5.集合 union 、union all

    集合操作 并集 (oracle数据库有-->交集intersect 差集minus)
    union(结合 合并的意思 并集)

    select t1.列,t1.列 from 表1 union select t2.列,t2.列 from 表2;

    将两张表的数据合并在一起显示出来,查询的列个数需要一致。

    union跟union all区别在于,union查询结果会去重复,union all不会,哪怕两条相同的数据也会显示,

    因此性能上union all更好,建议用union all。

  • 相关阅读:
    SuSe Linux 10 企业服务器搭建双机集群配置实例
    升级你的Linux日志系统
    企业部署Linux应用将拥有更低的TCO
    用VXE保护Linux系统安全
    Leetcode-995 Minimum Number of K Consecutive Bit Flips(K 连续位的最小翻转次数)
    Leetcode-994 Rotting Oranges(腐烂的橘子)
    Leetcode-993 Cousins in Binary Tree(二叉树的堂兄弟节点)
    Leetcode-552 Student Attendance Record II(学生出勤记录 II)
    Leetcode-213 House Robber II(打家劫舍 II)
    Leetcode-312 Burst Balloons(戳气球)
  • 原文地址:https://www.cnblogs.com/hebiao/p/14049522.html
Copyright © 2020-2023  润新知