CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

查询问题,在线等待!!!

楼主denxiaom(蛤蟆老大)2004-12-02 15:50:06 在 MS-SQL Server / 基础类 提问

有一个表有10584条记录,我用如下查询,返回2979条记录  
  select   zginfo.sfz    
  from   zginfo,middle_per  
  where   middle_per.id=zginfo.id   and   middle_per.name=zginfo.name   and   middle_per.sfz=zginfo.sfz  
  现在我需要另外7605条记录,写了一个procedure如下:  
  CREATE   PROCEDURE   sp_middle_per    
    AS  
            select   id,name,sfz  
            from   zginfo  
            where   sfz   not   in  
                              (select   zginfo.sfz    
                                from   zginfo,middle_per  
                                where   middle_per.id=zginfo.id   and   middle_per.name=zginfo.name   and   middle_per.sfz=zginfo.sfz)  
  GO  
  却返回7582条记录,是什么地方写错了??谢谢!! 问题点数:50、回复次数:14Top

1 楼Frewin(frewin)回复于 2004-12-02 15:53:20 得分 0

CREATE   PROCEDURE   sp_middle_per    
    AS  
            select   a.id,a.name,a.sfz  
            from   zginfo   a  
            where   Not   EXISTS  
                              (select   zginfo.sfz    
                                from   zginfo,middle_per  
                                where   middle_per.id=zginfo.id   and   middle_per.name=zginfo.name   and   middle_per.sfz=zginfo.sfz   And   a.sfz=zginfo.sfz   )Top

2 楼Frewin(frewin)回复于 2004-12-02 15:54:22 得分 10

select   id,name,sfz  
            from   zginfo  
            where   Isnull(sfz,'')   not   in  
                              (select   Isnull(zginfo.sfz   ,'')  
                                from   zginfo,middle_per  
                                where   middle_per.id=zginfo.id   and   middle_per.name=zginfo.name   and   middle_per.sfz=zginfo.sfz)Top

3 楼Frewin(frewin)回复于 2004-12-02 15:55:20 得分 0

因为用   in   时,null值将忽约Top

4 楼Eddie005(♂) №.零零伍 (♂)回复于 2004-12-02 15:58:13 得分 0

null引起的Top

5 楼lsxaa(小李铅笔刀)回复于 2004-12-02 16:00:20 得分 0

︶︵︶Top

6 楼didoleo(冷月无声)回复于 2004-12-02 16:02:48 得分 0

我觉得是用FULL   OUTER   JOIN   或   FULL   JOIN     比较好吧。Top

7 楼scorpiowell(年年岁岁花相似,岁岁年年人不同)回复于 2004-12-02 17:29:53 得分 0

FULL   OUTER   JOIN   或   FULL   JOIN是求笛卡尔集的。  
  比如你想取得zginfo表的10584条记录,如果想取middle_per表的,则用RIGHT   JOIN  
  select   zginfo.sfz    
  from   zginfo   LEFT   JOIN   middle_per   ON    
  middle_per.id=zginfo.id   and   middle_per.name=zginfo.name   and   middle_per.sfz=zginfo.sfz  
  Top

8 楼denxiaom(蛤蟆老大)回复于 2004-12-02 20:53:30 得分 0

都不行啊,我要求另外的7605条记录,也就是  
  select   zginfo.sfz    
  from   zginfo,middle_per  
  where   middle_per.id=zginfo.id   and   middle_per.name=zginfo.name   and   middle_per.sfz=zginfo.sfz  
  之外的的记录  
  Top

9 楼denxiaom(蛤蟆老大)回复于 2004-12-02 21:13:34 得分 0

有没有高手啊!!!救命啊!!!  
  我再说详细点。表middle_per是效验表,zginfo有三个字段ID(社保号),name(姓名),sfz(身份证),通过对比效验表,如果能在middle_per中找到ID,NAME,SFZ都一致的数据,就通过,放到一边不管,如果找不到全部一致的就挑出处理。  
  分不够在加。谢谢!!  
    Frewin的方法用NOT   EXISTS检索不到数据,用ISNULL和不用ISNULL检索出的是一样的。Top

10 楼comszsoft(星星点灯)回复于 2004-12-02 21:17:46 得分 0

不是   isnull    
  是   is   null  
  中间有个空格,okTop

11 楼denxiaom(蛤蟆老大)回复于 2004-12-02 23:14:40 得分 0

comszsoft(星星点灯)   ???Top

12 楼denxiaom(蛤蟆老大)回复于 2004-12-02 23:21:22 得分 0

我发现问题了,好象是SFZ字段有重复值造成的。  
  select   sfz   from   zginfo和select   distinct   sfz   from   zginfo检索出的结果数不等。  
  但怎么把重复值检索出来呢?Top

13 楼scorpiowell(年年岁岁花相似,岁岁年年人不同)回复于 2004-12-03 11:14:49 得分 40

查出sfz的相同数目:  
  select   sfz,相同数目=count(sfz)      
  from   zginfo   aa    
  where   (select   count(sfz)   from   zginfo   where   sfz=aa.sfz   group   by   sfz)>1    
  group   by   sfzTop

14 楼denxiaom(蛤蟆老大)回复于 2004-12-03 11:27:56 得分 0

多谢!  
  Top

相关问题

  • SQL查询(在线等待)
  • 求救!查询问题。在线等待。
  • 文本查询出错,在线等待!
  • 怎样实现查询?---在线等待
  • 一个查询!在线等待!!100分
  • SQL的语句查询(在线等待)
  • 两表查询问题,在线等待??????
  • 关于复合查询!在线等待!
  • 在线等待,vbscript查询问题
  • 在线等待:DTPicker时间段查询

关键词

  • 检索
  • zginfo
  • sfz
  • middle
  • 记录
  • isnull
  • join
  • full
  • where
  • procedure

得分解答快速导航

  • 帖主:denxiaom
  • Frewin
  • scorpiowell

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo