在我們的日常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