CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Oracle >  开发

单行子查询返回多于一行,如何处理。谢谢

楼主wchunge(山子)2005-08-03 14:57:19 在 Oracle / 开发 提问

select   a,b,...   from   a,b   where   a.id=b.id   and   a.id2||''||b.id2=  
  (select   a.id2||''||b.id2   from   a,b   where   a.id=b.id   group   by   a.id2,b.id2   having(count(*))>1) 问题点数:20、回复次数:16Top

1 楼miaoyuli(恶魔厕所里的神)回复于 2005-08-03 15:10:59 得分 0

不用=,用in呢?Top

2 楼wchunge(山子)回复于 2005-08-03 15:14:35 得分 0

用in   太慢。不行Top

3 楼bzszp(SongZip)回复于 2005-08-03 15:17:19 得分 0

select   a,b,...   from   a,b   where   a.id=b.id   and   a.id2||''||b.id2=  
  (select   max(a.id2||''||b.id2)   from   a,b   where   a.id=b.id   group   by   a.id2,b.id2   having(count(*))>1)  
  Top

4 楼precipitant(塞北的雪)回复于 2005-08-03 15:30:13 得分 0

如果不用in,好像非常不合理。Top

5 楼wchunge(山子)回复于 2005-08-03 15:37:13 得分 0

bzszp(SongZip)   不行,还是样的提示Top

6 楼miaoyuli(恶魔厕所里的神)回复于 2005-08-03 15:39:07 得分 0

本来这种||后的查询就慢吧?  
  要不就用笨方法,建临时表,临时表上建索引,先插再查Top

7 楼wchunge(山子)回复于 2005-08-03 15:57:58 得分 0

因为必须用两个字段合起来判断数据才准确Top

8 楼Goldrush(上天有好生之德)回复于 2005-08-03 21:19:05 得分 0

select   a,b,...   from   a,b   where   a.id=b.id   and   a.id2||''||b.id2=  
  (select   a.id2||''||b.id2   from   a,b   where   a.id=b.id   group   by   a.id2,b.id2   having(count(*))>1  
    and   rownum='1')Top

9 楼Goldrush(上天有好生之德)回复于 2005-08-03 21:37:04 得分 0

sorry,不对Top

10 楼lwty(藏浪)回复于 2005-08-04 01:17:05 得分 0

select   a,b,...   from   a,b   where   a.id=b.id   and   a.id2||''||b.id2=  
  (select   a.id2||''||b.id2   from   a,b   where   a.id=b.id   group   by   a.id2,b.id2   having   count(*)>1  
    and   rownum<2)Top

11 楼wchunge(山子)回复于 2005-08-04 08:57:48 得分 0

:lwty(藏浪     提示不是GROUP   BY的表达试Top

12 楼s198127(xyz)回复于 2005-08-04 09:31:00 得分 0

同意lwty(藏浪)的语句,只是他的顺序写反了:  
  select   a,b,...   from   a,b   where   a.id=b.id   and   a.id2||''||b.id2=  
  (select   a.id2||''||b.id2   from   a,b   where   a.id=b.id    
   
    and   rownum<2  
   
  group   by   a.id2,b.id2   having   count(*)>1  
  )Top

13 楼bobfang(匆匆过客)回复于 2005-08-04 10:27:14 得分 0

从楼主写的语句看,你是想查出所有a表中ID不唯一或者b表中ID不唯一的记录。可以这样写:  
  select   a,b,...    
          from   a,   b,  
                    (select   id   from   a   group   by   id   having   count(*)>1  
                      union  
                      select   id   from   b   group   by   id   having   count(*)>1)   c  
          where   a.id=b.id  
              and   a.id=c.id;Top

14 楼wchunge(山子)回复于 2005-08-04 14:18:16 得分 0

bobfang(匆匆过客)  
   
  是二个字段合起查出重复记录Top

15 楼bobfang(匆匆过客)回复于 2005-08-04 14:37:52 得分 0

不好意思,看错了,把ID2也看成ID了。这样写  
  select   a,b,...    
          from   a,   b,  
                    (select   a.id2||''||b.id2   ID2   from   a,b  
                              where   a.id=b.id  
                              group   by   a.id2,b.id2  
                              having   count(*)>1)   c  
          where   a.id=b.id  
              and   a.id2||''||b.id2=c.id2;  
   
  不过a.ID2||''||b.ID2与a.ID2||b.ID2是一样的。Top

16 楼bobfang(匆匆过客)回复于 2005-08-04 14:40:45 得分 20

而且上面的语句就等于  
  select   a,b,...    
          from   a,   b,  
                    (select   a.id2   aid2,   b.id2   bID2   from   a,b  
                              where   a.id=b.id  
                              group   by   a.id2,b.id2  
                              having   count(*)>1)   c  
          where   a.id=b.id  
              and   a.id2=c.aid2   and   b.id2=c.bid2;Top

相关问题

  • Tell Me Why ? 提示:单行子查询返回多余一行
  • 时间查询处理
  • Update语句提示"单行子查询返回多于一个行"
  • ORACLE查询怎么查询指定某一行到某一行之间的数据?内详
  • 一个处理查询的问题
  • 一个查询处理的问题
  • 绑定后,想查询如何处理?????
  • 查询时如何将多行数据合到一行里去?
  • 如何将单行编辑器的变量与数据库中的某个变量联系起来,使一个单行编辑器显示一行数据中的一个变量。
  • 如何用JDBC来查询数据库中日期最近的一行数据

关键词

  • where
  • group
  • count
  • select

得分解答快速导航

  • 帖主:wchunge
  • bobfang

相关链接

  • Oracle类图书

广告也精彩

反馈

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