oracle distinct用法
http://blog.csdn.net/yao__shun__yu/article/details/7960323
针对distinct不能一次查询用户想要的结果,采用group by解决
查询表(大批量的车牌号重复、要把重复的车牌号去掉,同时显示完整信息id、车牌号、型号)
[sql] view plaincopyprint?- 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 大车
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> 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 11223
- 9 rows selected
- 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> 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
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?
- SQL> select a.cid distinct a.cbrand from aps_car a;
- select a.cid distinct a.cbrand from aps_car a
- ORA-00923: FROM keyword not found where expected
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?- 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
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> select * from aps_car b where b.cid in (select max(a.cid) from aps_car a group by a.cbrand);
- CID CBRAND CMODEL CORIGIN CPRODUCE CBUY CPRIPAL CVOLUME CAPAC
- ----------- -------------------- -------------------- -------------------------------------------------- ----------- ----------- ---------- ----------- -----------
- 123 黑H 09B89 小车 中国吉林长春 1998-9-18 2009-4-15 冯婉莹 1000 1500
- 122 黑H 52100 中车 中国黑龙江哈尔滨 2007-9-4 2011-7-13 高洪建 700 850
- 125 京A 00104 大车 台湾高雄仙台市 2003-9-4 2012-3-14 付政委 8000 9000
- 126 京H 12345 大车 中国甘肃陇南 1987-2-17 2002-7-27 冯奇缘 2500 2000
- 128 京P 00100 大车 中国北京 2000-6-2 2010-12-23 冯奇缘 500 800
- 121 京P 23001 大车 中国北京 2010-10-25 2012-5-16 江风 500 800
- 132 京P 3H090 大车 中国广东佛山 2011-3-16 2012-11-22 付政委 8000 9500
- 124 京Y 22090 大车 韩国济州道江华郡 2003-5-8 2011-11-7 冯奇缘 9000 8000
- 127 沈A 11223 中车 中国辽宁大连 1985-4-4 2011-6-4 付政委 499 944
- 9 rows selected
- Executed in 0.266 seconds
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
