zoukankan      html  css  js  c++  java
  • mysq,oraclel复杂SQL操作汇总

    一.对数据库原有字段默认值的设置

    1.删除原有字段默认值

    alter table 表名 alter column 字段 drop default;
    2..重写原有字段默认值
    alter table 表名 alter column 字段 set default 0;

    二.存储过程函数f_lookup(),计数函数count(1),GROUP BY只对SELECT后包含的字段有意义,日期函数TIMESTAMPDIFF(DAY,sys_shrq,SYSDATE())

    2.1MySQL操作

    //超过一天未做的事情
    SELECT
    f_lookup(1137,mdjlx) as mdjlx ,count(1) as ncount
    FROM
    表名 
    WHERE

    *******
    and TIMESTAMPDIFF(DAY,sys_shrq,SYSDATE())>1
    GROUP BY mdjlx;

     通过mdjlx group 之后,select 这边就不要出现mdjlx之外的字段了,没意义的,也不符合规范,你看到的这些其他字段的信息,只是对应mdjlx的第一条数据而已

    2.2oracle数据库

    SELECT
    cname AS cname,
    count( 1 ) AS ncount
    FROM
    表名a,表名b

    WHERE

    ******

    AND ROUND(TO_NUMBER(sysdate - to_date(jhdksrq,'yyyy-mm-dd'))) > 1
    GROUP BY
    cname

    3..mysql包含之in

    SELECT count(1) as count FROM 表名 a,表名 b WHERE a.主键 = b.外键  and a.字段 in('1','2,'3') and  a.字段<> 1;

    4..and与or的结合使用

    update 表名SET 字段1= 99,s字段2 = 1 WHERE (字段3= '1' and 字段4 <> '99') OR (s字段5<>1 AND 字段6 = 99) ;

    5..instr与in

    update sr表名 set  sys_spzt = 0 where mhzsfz in (342623199709098090 , 3301026410244561245 ,  33010252 , 3301120252);

    update sr_main_ww  set  sys_spzt = 0 where  INSTR('33011203022252,3301120252', mhzsfz) >= 1

    SELECT * FROM 表名 WHERE 字段1= 1 AND 字段2 = 0 and (字段3= '' or 字段4 is null or 字段5 = '' or 字段6 is null or 字段7= '' or 字段8 is null) and instr('db_jz,kn_jz,wb_jz',字段9) > 0;

    6..not in的使用

    select 学生学号 from 表名 where  学生学号 not in(SELECT 学生学号 FROM  表名2 A,表名3 B WHERE A.主键= B.外键 AND A.学生学号= B.学生学号);

  • 相关阅读:
    从零开始写STL-容器-双端队列
    JVM 总结
    从零开始写STL-容器-list
    从零开始写STL—容器—vector
    Web 后端编程的几个关键点(总结中...)
    Java Web 总结
    Spring实战读书笔记
    MSDN 同步部分 个人笔记
    洛谷 P3391【模板】文艺平衡树(Splay)
    洛谷 P1503 鬼子进村
  • 原文地址:https://www.cnblogs.com/tongcc/p/11300118.html
Copyright © 2011-2022 走看看