oracle distinct用法

http://blog.csdn.net/yao__shun__yu/article/details/7960323

针对distinct不能一次查询用户想要的结果,采用group by解决

查询表(大批量的车牌号重复、要把重复的车牌号去掉,同时显示完整信息id、车牌号、型号)

[sql] view plaincopyprint?
  1. SQL> select a.cid,a.cbrand,a.cmodel from aps_car a;  
  2.    
  3.         CID CBRAND               CMODEL  
  4. ----------- -------------------- --------------------   
  5.           2 京P 23001            大车  
  6.          48 京P 23001            大车  
  7.          49 黑H 52100            中车  
  8.          51 黑H 09B89            小车  
  9.          52 京Y 22090            大车  
  10.          54 京A 00104            大车  
  11.          55 京H 12345            大车  
  12.          56 沈A 11223            中车  
  13.           1 京P 00100            大车  
SQL> select a.cid,a.cbrand,a.cmodel from aps_car a;CID CBRAND               CMODEL
----------- -------------------- --------------------2 京P 23001            大车48 京P 23001            大车49 黑H 52100            中车51 黑H 09B89            小车52 京Y 22090            大车54 京A 00104            大车55 京H 12345            大车56 沈A 11223            中车1 京P 00100            大车


distinct试试解决下(貌似解决了、但是没有完整的信息)

[sql] view plaincopyprint?
  1. SQL> select distinct a.cbrand from aps_car a;  
  2.    
  3. CBRAND  
  4. --------------------   
  5. 黑H 09B89  
  6. 黑H 52100  
  7. 京A 00104  
  8. 京H 12345  
  9. 京P 00100  
  10. 京P 23001  
  11. 京P 3H090  
  12. 京Y 22090  
  13. 沈A 11223  
  14.    
  15. rows selected  
  16.    
  17. Executed in 0.219 seconds  
SQL> select distinct a.cbrand from aps_car a;CBRAND
--------------------
黑H 09B89
黑H 52100
京A 00104
京H 12345
京P 00100
京P 23001
京P 3H090
京Y 22090
沈A 112239 rows selectedExecuted in 0.219 seconds


distinct试试输出完整信息(发现这哥们开始耳鼻的重复了,不行了。因为distinct会对后面的信息,进行匹配看重复不,而不是单个的)

[sql] view plaincopyprint?
  1. SQL> select distinct a.cbrand,a.cid from aps_car a;  
  2.    
  3. CBRAND                       CID  
  4. -------------------- -----------   
  5. 黑H 09B89                     51  
  6. 黑H 09B89                     60  
  7. 黑H 09B89                     70  
  8. 黑H 09B89                     80  
  9. 黑H 09B89                     93  
  10. 黑H 09B89                    103  
  11. 黑H 09B89                    113  
  12. 黑H 09B89                    123  
  13. 黑H 52100                     49  
  14. 黑H 52100                     59  
  15. 黑H 52100                     69  
  16. 黑H 52100                     79  
  17. 黑H 52100                     92  
  18. 黑H 52100                    102  
  19. 黑H 52100                    112  
  20. 黑H 52100                    122  
  21. 京A 00104                     54  
SQL> select distinct a.cbrand,a.cid from aps_car a;CBRAND                       CID
-------------------- -----------
黑H 09B89                     51
黑H 09B89                     60
黑H 09B89                     70
黑H 09B89                     80
黑H 09B89                     93
黑H 09B89                    103
黑H 09B89                    113
黑H 09B89                    123
黑H 52100                     49
黑H 52100                     59
黑H 52100                     69
黑H 52100                     79
黑H 52100                     92
黑H 52100                    102
黑H 52100                    112
黑H 52100                    122
京A 00104                     54

distinct再试试把cid字段放到前面(发现报错了,不行,不让这样用。。。nnd)

 

[sql] view plaincopyprint?
  1. SQL> select a.cid distinct a.cbrand from aps_car a;  
  2.    
  3. select a.cid distinct a.cbrand from aps_car a  
  4.    
  5. ORA-00923: FROM keyword not found where expected  
  6.    
SQL> select a.cid distinct a.cbrand from aps_car a;select a.cid distinct a.cbrand from aps_car aORA-00923: FROM keyword not found where expected


 

现在用group by解决下(已经解决了,但是也不能每个字段都加上max啊)

[sql] view plaincopyprint?
  1. SQL>  select a.cbrand,max(a.cid),max(a.cmodel) from aps_car a group by a.cbrand;  
  2.    
  3. CBRAND               MAX(A.CID) MAX(A.CMODEL)  
  4. -------------------- ---------- --------------------   
  5. 黑H 09B89                   123 小车  
  6. 黑H 52100                   122 中车  
  7. 京A 00104                   125 大车  
  8. 京H 12345                   126 大车  
  9. 京P 00100                   128 大车  
  10. 京P 23001                   121 大车  
  11. 京P 3H090                   132 大车  
  12. 京Y 22090                   124 大车  
  13. 沈A 11223                   127 中车  
  14.    
  15. rows selected  
SQL>  select a.cbrand,max(a.cid),max(a.cmodel) from aps_car a group by a.cbrand;CBRAND               MAX(A.CID) MAX(A.CMODEL)
-------------------- ---------- --------------------
黑H 09B89                   123 小车
黑H 52100                   122 中车
京A 00104                   125 大车
京H 12345                   126 大车
京P 00100                   128 大车
京P 23001                   121 大车
京P 3H090                   132 大车
京Y 22090                   124 大车
沈A 11223                   127 中车9 rows selected



在整理下group by方式(好了现在所有字段都可以输出了)

[sql] view plaincopyprint?
  1. SQL> select * from aps_car b where b.cid in (select max(a.cid) from aps_car a group by a.cbrand);   
  2.    
  3.         CID CBRAND               CMODEL               CORIGIN                                            CPRODUCE    CBUY        CPRIPAL        CVOLUME       CAPAC  
  4. ----------- -------------------- -------------------- -------------------------------------------------- ----------- ----------- ---------- ----------- -----------   
  5.         123 黑H 09B89            小车                 中国吉林长春                                       1998-9-18   2009-4-15   冯婉莹            1000        1500  
  6.         122 黑H 52100            中车                 中国黑龙江哈尔滨                                   2007-9-4    2011-7-13   高洪建             700         850  
  7.         125 京A 00104            大车                 台湾高雄仙台市                                     2003-9-4    2012-3-14   付政委            8000        9000  
  8.         126 京H 12345            大车                 中国甘肃陇南                                       1987-2-17   2002-7-27   冯奇缘            2500        2000  
  9.         128 京P 00100            大车                 中国北京                                           2000-6-2    2010-12-23  冯奇缘             500         800  
  10.         121 京P 23001            大车                 中国北京                                           2010-10-25  2012-5-16   江风               500         800  
  11.         132 京P 3H090            大车                 中国广东佛山                                       2011-3-16   2012-11-22  付政委            8000        9500  
  12.         124 京Y 22090            大车                 韩国济州道江华郡                                   2003-5-8    2011-11-7   冯奇缘            9000        8000  
  13.         127 沈A 11223            中车                 中国辽宁大连                                       1985-4-4    2011-6-4    付政委             499         944  
  14.    
  15. rows selected  
  16.    
  17. Executed in 0.266 seconds  

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部