mysql中selectdistinct的用法

2021-12-29 22:15:53 字數 1319 閱讀 8038

在使用mysql時,有時需要查詢出某個欄位不重複的記錄,雖然mysql提供有distinct這個關鍵字來過濾掉多餘的重覆記錄只保留一條,但往往只用它來返回不重覆記錄的條數,而不是用它來返回不重記錄的所有值。其原因是distinct只能返回它的目標字段,而無法返回其它字段,經過實驗,有如下方法可以實現。

舉例如下:

這是test表的結構

id test1 test2

1 a 1

2 a 2

3 a 3

4 a 1

5 b 1

6 b 2

7 b 3

8 b 2

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

select distinct test1 from test

得到的結果是:

test1ab

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

select distinct test1, id from test

test1 id

a 1a 2

a 3a 4

b 5b 6

b 7b 8

distinct怎麼沒起作用?作用是起了的,不過他同時作用了兩個字段,也就是必須得id與test1都相同的才會被排除,這不可能的,id是自動增長的。。。

我們再改改查詢語句:

select id, distinct test1 from test

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

通過查閱手冊,可以通過group_cancat來實現:

select id, group_concat( distinct test1 ) from test group by test1

id group_concat( distinct test1 )

1 a5 b

不過它只有在4.1.0以後才能用,對於那些老版本的資料庫是不行的。

可以通過其他函式來實現:

select *, count(distinct test1) from test group by test1

id test1 test2 count( distinct test1 )

1 a 1 1

5 b 1 1

最後一項是多餘的,不用管就行了,目的達到。。。。。

還有更簡單的方法也可以實現:

select id, test1 from test group by test1

id test1

1 a5 b

php中mysql函式 php中mysql有關函式

1.mysql query 一般是用來查詢資料裡面的資料。如 username post name sql select from members where login name username result mysql query sql 以上程式是檢測資料庫中是否存在表單傳送過來的使用者名稱...

mysql中 變數 mysql中的變數

toc 變數 mysql本質是一種程式語言,需要很多變數來儲存資料。mysql中很多的屬性控制都是通過mysql中固有的變數來實現的。系統變數 系統內部定義的變數,系統變數針對所有使用者 mysql客戶端 有效。檢視系統所有變數 show variables like pattern mysql允許...

mysql中 變數 MYSQL中的變數 MySQL

bitscn.com 只記很基礎的知識,細節東西太麻煩了,而且我也用不到。變數分為使用者變數與系統變數。使用者變數 使用者變數與資料庫連線有關,在這個連線中宣告的變數,在連線斷開的時候,就會消失。在此連線中宣告的變數無法在另一連線中使用。使用者變數的變數名的形式為 varname的形式。名字必須以 ...