zoukankan      html  css  js  c++  java
  • SQL语句or查询,union all查询,分页查询,分组,AND查询

    一.OR查询

    1.在AND多个筛选条件和一个or条件时,如果没有括号包裹,or会就近原则包裹之后的所有and条件,也就是同级的多个and条件只能对,or条件的一边起作用

    2.如果or条件两边的筛选条件,各有10个,,其中9个相同,不能抽出相同的9个条件放后面,,这样的写法会使这9个条件只会对or条件后面起作用

    二.union all查询

    1.数据库中两张完全独立的表,但其中某些的列含义一样,这时又需要同时在这两张表中,所有数据的基础上,去筛选出需要的数据,这时可以用union

    合并两张表查出来的数据,但列名要相同

    SELECT FA_APPLY AS WF_CREATE,FA_JSON AS WF_JSON FROM T_FORM_APPROVE
    UNION ALL
    SELECT WF_CREATE,WF_JSON FROM T_FORM_WORK;

    三.ROWNUM分页查询

    1.首先要明确一点:数据库操作时每生成一张临时新表时都会默认自动生成ROWNUM这个列,不管你查询时是否把它查询出来,它都存在

    2.2016-08-08:伪列ROWNUM机制

    oracle的rownum不能这么用。rownum是对结果集的编序排列,始终是从1开始,所以你的rownum>5永远为假,所以就没记录返回。rownum只能用于<。
    当然你可以做嵌套,将rownum选出来后再做查询。

     3.分页三层嵌套查询:

      1.第一层数据查询:查询出想要的结果集

      2.第二层排序查询:通过排序整理出有序的结果集

      3.第三层筛选查询:通过大与小区间,筛选出符合需求的数据

      如果只有两层:1.顺序错乱 2.因为伪列只能从1查起

    4.注意:

      当去重复distinct和分页一起使用时会起冲突,去重复会失效; 去重复的限制条件,,只有在所有数据都相同的情况下才可以去重复,只要有一个值不同就无法去重复,所有和分页同时使用时会起冲突

    四.查询

    1.查询出来的结果不过作为筛选条件,只有已经存在的表即使是临时表中的数据,才能作为筛选条件。但是排序,分组等其它操作要用结果集的数据

    2.2016-07-13

    主副表,只要满足关联条件,就会生成一条数据,不管这条数据有多少个空列

    3.关联查询时:主表,主键,副表,外键,有两种情况

    a.主表+外键:ON条件,这里只能当做匹配条件:匹配副表里的数据

    这里通过筛选副表被匹配的列,同样可以达到下面主表+主键,筛选数据的效果

    b.主表+主键:ON条件,这里可以当做筛选条件where:筛选主,副表同时满足的数据

    主表查询的是数据条数,副表查询的是数据值,ON条件,满足关联条件的数据会筛选出来,但是这里有一个前提是主键,筛选主表的数据,匹配副表的值

    五.分组查询 2016-06-23

    1.SELECT DEPT ,COUNT(ORG_ID) FROM ORG GROUP BY DEPT,在SQL语句进行分组后,查询内容只能是被分组列,或者其它列的函数操作例如,记数,求和,平均数,最大最小值 

    2.想要在分组SQL语句中使用where条件筛选,只能通过查询子表,在子查询中使用,这样可以变相的达到使用where

    SELECT ORG_NAME FROM (SELECT ORG_NAME FROM T_ORG WHERE ORG_ID = 'admin') temp GROUP BY temp.ORG_NAME ;

    3.分组查询可以同时分组多个列

    4.不断通过子查询,得出临时表,查询临时表,得到你最终想要的数据

    SELECT
      ORG_NAME,
      SUM(counts)
      FROM
        (
          SELECT
            O.ORG_NAME,
            U.user_login_name,
            T.counts
          FROM
            T_ORG O
          LEFT OUTER JOIN
            t_user_rela_org R
          ON
            O.T_ORG_ID = R.T_ORG_ID
          LEFT OUTER JOIN
            T_USER U
          ON
            U.USER_ID = R.USER_ID
          LEFT OUTER JOIN
            (
              select
                PROJECT_CREATE USER_ID,
                count(project_id) counts
              from
                t_project
              group by
                PROJECT_CREATE
            ) T
          ON
            U.USER_ID = T.USER_ID
        WHERE
          O.ORG_ID = 'admin'
      ) temp
    GROUP BY
      ORG_NAME ;

    6.联合查询后分页查询2016-07-13

       a.需要二次时间排序和在第二层分页筛选,因为第一层筛选受联合查询的影响,数据顺序是混乱的,外加一层排序后再分页

    七.and查询2016-07-20

     1:条件之间没有先后顺序,满足的条件是同时都满足

     2:当多个and条件产生冲突时,筛选条件全部失效,列如.a>b and a<b 现实中没有满足条件的a,所以失效

     3:注意

      a.根据列筛选数据时,同级的and条件中只能出现一次,可以避免and条件冲突

          b.根据列中的值筛选数据时.同级的and条件中可以出现多次

       纠正:2016-07-21:a,b

       a.筛选and条件冲突,其实是因为and条件中有一个条件是函数,猜测,函数的优先级高会先执行或者被()包裹的代码优先级高

       

  • 相关阅读:
    Java【第二篇】基本语法之--进制、运算符
    Java【第一篇】基本语法之--关键字、标识符、变量及分类、数据类型及转换
    安装运行zookeeper的坑
    部署java应用的几种方式
    解决sudo用户找不到环境变量的问题
    Python装饰器详解
    filebeat开启自带模块收集日志如何辨别日志来源等
    使用elasticsearch7.3版本在一台主机上部署多个实例组建集群
    redis 集群搭建
    Kibana多用户创建及角色权限控制
  • 原文地址:https://www.cnblogs.com/jianyi12/p/5596325.html
Copyright © 2011-2022 走看看