mysql groupby 字段合並問題(group_concat)


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

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

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

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

  

 

   現在我們向這張表中插入一些數據。  

    insert into test_group_concat  values(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

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM