zoukankan      html  css  js  c++  java
  • 又是一句奇怪的SQL

    其中PACKAGE 为主表,package_id为num型自增ID。package_id被一堆表引用。我要找出所有没有被引用的package_id。
    在Oracle下用这句是对的。
    select package_id  from PACKAGE where package_id not in(
         select package_id  from PACKAGE where package_id in
         (
         select package_id from CLAIM
         union
         select package_id from LAWCASE
         union
         select package_id from MEETINGS
         union
         select package_id from WORK_PLAN_SUM
         union
         select package_id from WORK_REPORT
         union
         select package_id from ORG_PDUTY
         union
         select package_id from ORGANIZE
         union
         select package_id from FILE_ASSIGN
         )
    )
    但是上面的SQL太难看了。我又直接把NOT写到里面
    select package_id  from PACKAGE where package_id not in(
         select package_id from CLAIM
         union
         select package_id from LAWCASE
         union
         select package_id from MEETINGS
         union
         select package_id from WORK_PLAN_SUM
         union
         select package_id from WORK_REPORT
         union
         select package_id from ORG_PDUTY
         union
         select package_id from ORGANIZE
         union
         select package_id from FILE_ASSIGN
    )
    结果在Oracle里执行,在有些数据下结果对。有时结果竟出错。:(
    打个比方比如一共3条记录,1,2,3 ,其中1,2被外键引用。结果有时会查出
    被用引的ID为
    -----
    1
    -----
    2
    -----
    空格
    -----
    然后没有被引用的为
    -----
    空格
    -----
    吐血。不过后来自己造了一批数据又没测出这个问题。我真想不通怎么会查出有空格这种记录。数据库完整性施加的够严格了。怎么可能会出现num型的package_id里查出空格。但是记录里我查了一下真的没有空行呀。早上这句SQL差点删掉一批有用的数据


  • 相关阅读:
    贪吃蛇模块划分
    你今天听见《风声》了吗“ 学习无处不在继潜伏后《风声》观后
    贪吃蛇结束条件分析
    CSS fieldset制作表单,抛弃Table
    两个路由器串联
    .net 几种获取路径方法
    C# 对文件与文件夹的操作 删除、移动与复制
    mvc3在IIS中的部署(转)
    HTTP 错误 500.21 Internal Server Error
    遗留问题
  • 原文地址:https://www.cnblogs.com/tongzhenhua/p/15594.html
Copyright © 2011-2022 走看看