skillup

技術ブログ

Database

MYSQL group_concat,cast等

投稿日:2017年2月20日 更新日:

実務でいろいろとトラブルがあり、データベースから在庫データを見てくれ~なんて依頼がありましたんでSQLをごりごり書いていたんですが、普段使わないようなSQLの構文を使ったのでここでちょっと紹介します。

group_concat

グルーピングした項目でグルーピングにならないデータを抽出する方法です。

テーブル名 product

id|category|product_name
1| a | りんご
2| a | みかん
3| a | かき
4| b | パソコン
5| b | スマホ

上記みたいなデータがあったとして、
a|りんご、みかん、かき
b|パソコン、スマホ

みたいな出し方をしたいときですね。この場合group_concatで下記のように書けばOKです。

これは汎用性が結構あるかとおもい、なぜ今までしらなかったんだろうと若干後悔しました。ちなみにつなげる項目のソートもできます。詳しくは下記参照

MySQLのgroup_concatで複数レコードを1行にまとめる

substring_index

文字列の分割でPHPのexplodeやperlのsplitにあたります。リンクのほうがわかりやすいのでそのまま張ります。

MySQL 関数リファレンス 区切り文字列N個目までの文字列を取り出す (SUBSTRING_INDEX)

cast

ソートをするときに使います。例えば1,2,11という文字があったとして、これを昇順にソートする場合、人間だと1 2 11と数値と判断して並べますが、文字だと1,11,2になってしまいます。これを防ぐために001,002とやるのが正しいのですが、そうでないときは無理数字に変換する必要があります。

その場合下記のように書けば数値になります。

sampleTableにcolという列があり、文字が入っているものを数値化したい場合、下記のように書けばOKです。

union

union自体は知っていたのですが、MySQLでfull outer joinが使えないときに使えると知りました。

これまたリンク先がよくできているので任せます(爆)

MySQLでの完全外部結合

【MySQL5.6】完全外部結合(FULL OUTER JOIN)のやりかた

 

 

-Database
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

データ構造の基礎知識 後編 木構造

データベースの学習をしていたときの復習です。 データ構造の基礎知識 前編 メモリとポインタ、配列と連結リスト データ構造の基礎知識 中編 ハッシュ 今回はもう少し複雑な「木構造」について考えてみます。 …

no image

DBUtils活用

普段はJavaEEで開発を行っているのでデータベースへのアクセスはJPAを活用しています。 ただ、JavaEE環境だとglassfish経由でデータベースを動かしているので、glassfishを動かさ …

no image

MySQL小ネタ テーブル単位のリストア・SQLの小ネタ(バックスラッシュの検索)

MySQLのちょい小ネタ。 Contents1 テーブル単位でバックアップ&リストア2 バックスラッシュの入ったSQLについて テーブル単位でバックアップ&リストア 1 通常のdump(データベース単 …

no image

MySQLのメモリ設定

実務で結構サーバーをヘビーに使われるお客さんがいて、SQLが遅くなったりとしています。 なんとか対策しないといけないので、いろいろと調査をいます。 それで今回はMySQLのメモリ問題など。 MySQL …

no image

Webの高速化に関して

Webの高速化に関してメモ。 高速化って言っても幅広いんですけどね。自分が行なっている対策に関して。 一応LAMP環境を前提にしてます。 Contents1 一番大事なのは測定2 DB対策3 フロント …

アーカイブ