国产探花免费观看_亚洲丰满少妇自慰呻吟_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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 马尔康县| 桂阳县| 罗田县| 南靖县| 莱芜市| 镇安县| 红桥区| 甘洛县| 尼玛县| 十堰市| 西吉县| 鄢陵县| 武功县| 霸州市| 晋江市| 崇阳县| 牡丹江市| 宁乡县| 襄樊市| 图木舒克市| 和龙市| 靖宇县| 青铜峡市| 陆河县| 兴化市| 葵青区| 阿拉善左旗| 和硕县| 文成县| 和田市| 尼玛县| 剑川县| 昭通市| 高清| 穆棱市| 龙井市| 贵港市| 四子王旗| 江门市| 永清县| 樟树市|