group系列
之前覺得這里簡單不需要再進行總結了,后來發現還是需要總結鞏固一下,還是有一些方法之類的之前未使用過,這里來重新整理,記錄一下,
group by
將表中的資料根據某個條件進行分組,
比如下面這張表:

如果我們按照班級進行分組 那么資料將會是這樣的:

通過mysql執行表格資料進行校驗:

select classname ,GROUP_CONCAT(id,name,courseName,score SEPARATOR '%') from winfun GROUP BY classname;
運行結果:
group_concat()待會再總結,

根據group by的特性,這也是為什么通過group by進行分組后,我們對資料操作需要借助一些函式,
分組后資料變成了一行中包含多條資料,沒辦法在mysql中通過表格表現出來,
concat_ws()函式
caoncat_ws()函式可以把欄位之間拼接起來
官網示例:
mysql> SELECT CONCAT_WS(',','First name','Second name','Last Name');
-> 'First name,Second name,Last Name'
mysql> SELECT CONCAT_WS(',','First name',NULL,'Last Name');
-> 'First name,Last Name'
功能就是將字串通過自己設定的分隔符拼接起來:
select CONCAT_WS(',,,','he','ll','o');
運行結果:

group_concat()函式
在group by中使用過該函式,它可以把通過group by分組后后面的資料拼接起來,
通過group by分組后的資料:

如果我們按照classname分組,那么分組后當前組的資料,就是group_concat()的主要拼接物件,

group_concat()語法:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [,col_name ...]]
[SEPARATOR str_val])
示例sql:
select classname ,GROUP_CONCAT(id,name,courseName,score ORDER BY score SEPARATOR '%') from winfun
GROUP BY classname;
group_caoncat(要拼接的資料[,要拼接的資料...] [order by column desc|asc] SEPARATOR 'string')
-- SEPARATOR 這里設定每條資料間的分割符
運行結果:

這里我們可以和上面的concat_ws()函式一起來使用:
select classname ,GROUP_CONCAT(CONCAT_WS(' | ',id,name,courseName,score) ORDER BY score SEPARATOR '%') from winfun GROUP BY classname;
運行結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/543351.html
標籤:其他
