group_concat(),手冊上說明:該函式返回帶有來自乙個組的連線的非null值的字串結果。
比較抽象,難以理解。
通俗點理解,其實是這樣的:group_concat()會計算哪些行屬於同一組,將屬於同一組的列顯示出來。要返回哪些列,由函
數引數(就是欄位名)決定。分組必須有個標準,就是根據group by指定的列進行分組。
group_concat函式應該是在內部執行了group by語句,這是我的猜測。
1.測試語句:select group_concat(town) from `players` group by town
結果去查詢town中去查詢哪些值是一樣的,如果相等,就全部列出來,以逗號分割進行列出,如下:
group_concat(town)
北京,北京
長沙2.測試:select group_concat( town )
from players
結果:group_concat(town)
長沙,北京,北京,
上面是否可以證明,group_concat只有與group by語句同時使用才能產生效果? 下面進行了實際測驗
3.測試常量對group_concat()的配置影響:
set @@group_concat_max_len=4
手冊中提到設定的語法是這樣的:
set [session | global] group_concat_max_len = val;
兩種有什麼區別?
set @@global.group_concat_max_len=4;
global可以省略,那麼就變成了:set @@group_concat_max_len=4;
4.使用語句 select group_concat(town) from `players`。結果得到:
group_concat(town)
長沙,北京,長沙,北京
結論:group_concat()函式需要與group by語句在一起使用,才能得到需要的效果。
原因可以這樣理解:group_concat()得到是屬於x組的所有成員(函式裡面列引數指定需要顯示哪些字段)。x組從**來?如
果沒有group by進行指定,那麼根本不知道group_concat()根據哪個分組進行顯示出成員。 所以,像上面沒有group by子句
的時候,就顯示了長沙和北京。
實際中什麼時候需要用到這個函式?
假如需要查詢的結果是這樣:左邊顯示組名,右邊想顯示該組別下的所有成員資訊。用這個函式,就可以省去很多事情了。
另外,假如我這樣使用:select group_concat( name, *** ) from `players` town。意義不大。group_concat()指定乙個
列是最好的情況。如果指定了多個列。那麼顯示結果類似這樣:
group_concat(name,***)
王滔,王小明男,劉惠女,舒明女
group concat 函式總結
group concat 手冊上說明 該函式返回帶有來自乙個組的連線的非null值的字串結果。比較抽象,難以理解。通俗點理解,其實是這樣的 group concat 會計算哪些行屬於同一組,將屬於同一組的列顯示出來。要返回哪些列,由函 數引數 就是欄位名 決定。分組必須有個標準,就是根據group ...
關於mysql函式GROUP CONCAT
group concat 是mysql資料庫提供的乙個函式,通常跟group by一起用,具體可參考mysql官方文擋 語法 group concat distinct expr expr order by asc desc col name separator str val 1.例如 selec...
關於mysql函式GROUP CONCAT
關於mysql函式group concat miky group concat 是mysql資料庫提供的乙個函式,通常跟group by一起用,具體可參考mysql官方文擋 語法 group concat distinct expr expr orderby asc desc col name se...