国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

oracle中distinct的用法詳解

2024-08-29 13:58:39
字體:
來源:轉載
供稿:網友
distinct這個關鍵字來過濾掉多余的重復記錄只保留一條,但往往只用它來返回不重復記錄的條數,而不是用它來返回不重記錄的所有值。其原因是distinct只有用二重循環查詢來解決,而這樣對于一個數據量非常大的站來說,無疑是會直接影響到效率的。
 

下面先來看看例子:

table表

字段1     字段2    id        name    1           a    2           b    3           c    4           c    5           b

庫結構大概這樣,這只是一個簡單的例子,實際情況會復雜得多。

比如我想用一條語句查詢得到name不重復的所有數據,那就必須使用distinct去掉多余的重復記錄。

select distinct name from table 得到的結果是:

---------- 

name    a    b    c

好像達到效果了,可是,我想要得到的是id值呢?改一下查詢語句吧:

select distinct name, id from table

結果會是:

----------

id name    1 a    2 b    3 c    4 c    5 b

distinct怎么沒起作用?作用是起了的,不過他同時作用了兩個字段,也就是必須得id與name都相同的才會被排除。。。。。。。

我們再改改查詢語句:

 select id, distinct name from table

很遺憾,除了錯誤信息你什么也得不到,distinct必須放在開頭。難到不能把distinct放到where條件里?能,照樣報錯。

------------------------------------------------------------------------------------------------------------

下面方法也不可行:

select *, count(distinct name) from table group by name

結果:

ORA-00979: not a GROUP BY expression00979. 00000 - "not a GROUP BY expression"

依然報錯, 

group by 必須放在 order by 和 limit之前,不然會報錯

------------------------------------------------------------------------------------------------------------

偶認為這樣可行

select max(id), name from table group by name;

結果:

id name
1  a
2  b
4  c
5  d

用法二:

一、數據:

1    zjx    001    AAAiBZAAQAAAAVPAAA
2    zjx    002    AAAiBZAAQAAAAVPAAB
3    zjx    001    AAAiBZAAQAAAAVPAAC

二、多字段

select distinct t.name,t.code from test1 tselect distinct t.* from test1 t

結果:

1    zjx    001
2    zjx    002

 

三、單字段

select distinct t.name from test1 t

結果:

1    zjx



注:相關教程知識閱讀請移步到oracle教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平顺县| 运城市| 汉沽区| 德兴市| 博罗县| 洛南县| 南平市| 古交市| 松桃| 广德县| 望都县| 敦化市| 新宾| 麻江县| 攀枝花市| 北安市| 乌拉特前旗| 武定县| 青冈县| 法库县| 黄大仙区| 乌苏市| 榆林市| 钟祥市| 旬阳县| 乌什县| 龙游县| 绥阳县| 元朗区| 柳河县| 马山县| 金沙县| 乐山市| 兴义市| 龙岩市| 清镇市| 富源县| 道真| 桃园县| 唐海县| 磐石市|