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差点删掉一批有用的数据


  • 相关阅读:
    解决pip3的ImportError: cannot import name 'main'
    linux 安装Python3.6
    Linux安装redis和部署
    redis密码管理
    CentOS7使用firewalld打开关闭防火墙与端口
    scrapy 从Windwos平台移植到 Linux平台之实操
    Linux 环境下安装Maven
    解决:安装Jenkins时web界面出现该jenkins实例似乎已离线
    持续集成工具Jenkins结合SVN的安装和使用
    Linux下的SVN服务器搭建
  • 原文地址:https://www.cnblogs.com/tongzhenhua/p/15594.html
Copyright © 2011-2022 走看看