1. 程式人生 > 實用技巧 >mysql groupby 欄位合併問題(group_concat)

mysql groupby 欄位合併問題(group_concat)

  在我們的日常mysql查詢中,我們可能會遇到這樣的情況:

    對錶中的所有記錄進行分類,並且我需要得到每個分類中某個欄位的全部成員。

  上面的話,大家看起來可能不太好懂,下面舉一個例子來給大家說明。

  現在我們有一張表,結構如下:

  

  現在我們向這張表中插入一些資料。  

    insert into test_group_concatvalues(default,1,'ppaa',1594802453,0),(default,1,'llcc',1594802453,0),(default,2,'uupp',1594802453,0),(default,2,'ttww',1594802453,0)

  現在我們可以看到,資料表的情況如下:

  

  我的需要是這樣的:我需要對type_id進行分組,而且每個分組下的所有name我都要得到,這個是後應該怎麼辦呢?

  這樣寫:select type_id,name from test_group_concat GROUP BY type_id

  我們得到的結果是這樣的:

  

  上面每個type_id對應只有一個name,這顯然不符合我們的需求,我們的需求是需要找出type_id = 1 這個分類下所有的name,和type_id = 2的所有的name。

  怎麼辦呢?

  有朋友會想到,“用concat就可以解決問題了嘛!”,好的,我們現在試一下。

  select type_id,concat(name) as names from test_group_concat GROUP BY type_id

  結果如下:

  

  很顯然,沒有達到我們的預期,怎麼辦!!!

  mysql中給我們提供了一個函式:group_concat,利用這個函式,我們就能夠很好的解決上述問題。我們試一下。

  select type_id,group_concat(name) as names from test_group_concat GROUP BY type_id

  結果如下:

  

  上述結果,很好的滿足了我們的需求。

  那有朋友就會問了,如果我不僅想知道分類某個欄位的全部資訊,我還想要某兩個欄位連線在一起的所有資訊,我們可以這麼去寫。

  select type_id,group_concat(id,',',name) as names from test_group_concat GROUP BY type_id