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

Firebaseでのミニアプリデプロイ

KVS的なDBを使うかもしれず、firebaseの復習をしております。以前、firebaseのサンプルなどちょこちょこ動かしましたが、firebaseに登録をしただけでデプロイまではしておりませんでし …

no image

第二、第三の正規化&ER図&Check制約

前回第一正規化を話したので、第二、第三に進んでいきます。 Contents1 第二正規化とは?2 第三正規化とは?3 正規化のメリット4 ER図5 本日のSQLネタ Check制約 第二正規化とは? …

no image

dbUnitの使い方

えーJavaで有名なテストツールDBUnitについて。 DbUtilではありませんので間違えないように。(私は最初間違えました・・・) まだ全然使い込んでるわけではありませんがどんなことができるかとい …

no image

SQL 更新系に関して

SQL実践入門、残り2章になりましたが、いやーむずいっす。 今回は9章を進めていますがSQLはもともと検索を主な用途として発展したため、SELECT文の使用がメインになります。 ですが、UPDATE文 …

no image

大規模Webサービス技術入門 DBの分散

前回に引き続き、大規模サービスを運用するときに必要になるMySQLの知識についてのまとめ Contents1 テーブル・SQL設計2 レプリケーション機能3 パーティショニング テーブル・SQL設計 …