LoginSignup
0
0

More than 5 years have passed since last update.

いまさら MySQL で group_concat 使い複数レコードを1行にまとめる

Posted at

group_concat って

複数レコードあるデータを1行にまとめ表示することが可能な命令です。DB2 でいうところの OCCURS っぽい感じって言っても分かる人すくないか…。

例えば

例えば、テーブルとカラム名のリストが欲しいっていったら、さっくり下記みたいなプログラムを書けばいいと思うのだけど(私は、phpで作っちゃう人)。

foreach ($ret_array as $key => $value ) {
$sql = <<< EOM
desc $value;
EOM;

  $stmt = $pdo->query($sql);
  $koumoku = "";
  while($result = $stmt->fetch(PDO::FETCH_ASSOC)){
    $Field = $result['Field'];
    $koumoku = $koumoku . "\t" . $Field;
  }

  echo $value . "\t" . $koumoku . "\n";
}

こんなことしなくても、いいよとw

簡単に実現できるのね

group_concat 使うと楽ですな。

select TABLE_NAME, group_concat(COLUMN_NAME separator x'09')
from INFORMATION_SCHEMA.COLUMNS 
where TABLE_NAME like 'S%'
group by TABLE_NAME
order by TABLE_NAME

結果、横に長くなるので切ったけど、思うようにとれた。便利やわー。

+-------------------+--------------------------------------------------
| TABLE_NAME        | group_concat(COLUMN_NAME separator x'09')        
+-------------------+--------------------------------------------------
| SCHEMATA          | CATALOG_NAME      SCHEMA_NAME     
| SCHEMA_PRIVILEGES | IS_GRANTABLE      PRIVILEGE_TYPE  TABLE_SCHEMA    
| SESSION_STATUS    | VARIABLE_VALUE    VARIABLE_NAME                   
| SESSION_VARIABLES | VARIABLE_NAME     VARIABLE_VALUE                  
| STATISTICS        | CARDINALITY       SUB_PART        PACKED  NULLABLE
+-------------------+---------------------------------------------------
5 rows in set (0.02 sec)
0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0