Mysql的統計重覆記錄

2021-07-25 15:22:16 字數 1305 閱讀 5447

雖說sql語法,這些主流的資料庫引擎都支援,但是每乙個資料庫引擎都有自己的特性,例如統計並顯示非重複的資料。

mysql的實現形式是:

資料庫test

id name

1 agle

2 blibli

3 cat

4 cat

5 blibli

比如我想用一條語句查詢得到name不重複的所有資料,那就必須使用distinct去掉多餘的重覆記錄。

select distinct name from test

得到的結果是:

name

agle

blibli

cat如果我們需要多個欄位呢?該怎麼辦?我們繼續往下看

select distinctuid, name from test

結果會是:

uid name

1    agle

2    blibli

3    cat

4    cat

5    blibli

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

解決方法: select uid, name from table

group by

name

如果在加上count這個統計聚合函式呢?為了統計agle,blibli,cat出現的次數呢?

情況仍然是這樣, 你會發現如果你採用如下的sql語句執行得到的結果也不是你想要的~

select distinct uid, name, count(*) from test

結果會是:

uid name count(*)

1    agle   5

顯然不是我們需要的,mysql需要使用

group by 來完成這些

select distinct uid, name, count(*) from test group by name

結果是:

uid name 

count(*)

1    agle     1

2    blibli     2

3    cat       2

那如果我們想要顯示多個欄位的時候,怎麼辦呢?

可以在 group by 後面接上多個字段,如 group by name, uid

其實此時,distinct有沒有結果都是一樣的,感覺mysql中去重統計一般都是mysql使用group by 關鍵字,distinct並沒有啟動作用,如理解有誤

望指正~

mysql 重覆記錄

不希望資料表中有重覆記錄的時候我們可以給表新增乙個聯合唯一索引 例如,user表中有user id,user name兩個字段,如果不希望有兩條一摸一樣的的user id和user name,我們可以給user表新增兩個欄位的聯合唯一索引 alter table user add unique in...

sql 重覆記錄和重覆記錄數

如果table1有兩個column adress和pepole,那麼下面的sql可以找出table1裡的重覆記錄和重覆記錄數 create table table1 adress nvarchar 10 pepole nvarchar 10 insert table1 select 寧波 張三 nb...

SQL查詢重覆記錄,刪除重覆記錄

1 查詢表中多餘的重覆記錄,重覆記錄是根據單個字段 docid 來判斷 select from tablename where docid in select docid from tablename group by docid h ing count docid 1 例二 select from...