MYSQL文字列接続:CONCAT,CONCAT_WS, GROUP_CONCAT


成績表を例にとると
一人の学生が複数の成績を持っているので,成績をつなぎ合わせる
1. CONCAT(str1,str2,...)
接続文字列(nullのパラメータがある場合nullを返します)
SELECT  CONCAT(name,chinese) FROM grade
  :xiaoming86

このようにつなぎ合わせるのは直感的ではないので,私たちは彼にカンマで区切った.
2. CONCAT_WS(separator,str1,str2,...)
指定した区切り記号で文字列(concat with separator)をnullに接続するとnullが返されます.
SELECT CONCAT_WS(',',name,chinese) FROM user_info
  :xiaoming,86

3. GROUP_CONCAT(フィールドorder byフィールドseparator'セパレータ')
GROUP BYが生成した同じパケットの値を接続し、文字列の結果を返します.
eg.ある学生は何度も試験を受けたことがあります.この学生のすべての試験の国語の成績を調べて表示します.
SELECT name, GROUP_CONCAT(chinese) ORDER BY time SEPARATOR '/') FROM grade GROUP BY name
  :xiaoming 86,90,60,90

区切り文字が書かれていない場合、デフォルトはカンマです.
eg.ある学生は何度も試験を受けたことがあります.この学生のすべての試験の国語、数学、英語の成績を時間順に調べて表示します.科目間は「-」で区切られ、成績間は「,」で区切られ、名前と成績は「/」で区切られています.
SELECT CONCAT_WS('/',name,GROUP_CONCAT(CONCAT_WS('-',chinese,math,english) ORDER BY time)) FROM grade GROUP BY name
  : xiaoming/80-60-90,50-60-40,60-60-90,89-39-90