zoukankan      html  css  js  c++  java
  • Oracle粗心大意总结篇

    有时候写sql语句不细心的话,很容易犯大错误,导致你纠结好久,找不到原因,慢慢总结:

    错误1:

    SELECT * FROM
    (
    SELECT USER.*, ROWNUM AS CON FROM USER WHERE ROWNUM <= 10 AND to_char(save_log_time,'yyyymmdd')=to_char(sysdate,'yyyymmdd') ORDER BY money desc
    )
    WHERE CON >=1;

    正确1:

    SELECT * FROM
    (select b.*,ROWNUM rn from (select a.* from USER a WHERE to_char(save_log_time,'yyyymmdd')=to_char(sysdate,'yyyymmdd') order by money desc) b)
    WHERE rn BETWEEN 5 AND 10

    总结:其实是想把今天的数据拿出来,按照拥有的钱多少排序,然后再取从多少到多少条进行处理,但是一开始没注意,就图个快,嗖嗖嗖的写好语句,结果没注意,后台调试以为代码错误,后来吗,才想起sql写的不对哈。

    原因:因为如上错误的语句,直接连取出指定值和排序一起执行,这样是不对的,是取不出正常的数据,所以需要改为正确的语句,先把要用的数据排序全查不出来之后,再去嵌套一层,取出你想要的哪条到哪条,这样搞定。

  • 相关阅读:
    verilog之计数器0~9999——数码管显示
    C语言的谜题
    modelsim SE6.2b的常用问题
    [转载]MDK常见报错(编译arm)
    Nios II之LED实验(SDRAM+EPCS4配置)————基于Altera的DE0开发板
    poj2210
    poj1161
    poj1555
    poj2337
    poj1107
  • 原文地址:https://www.cnblogs.com/emperorking/p/7754336.html
Copyright © 2011-2022 走看看