私大文系卒だめだめエンジニア奮闘記

日々の業務で躓いた箇所を備忘録してブログを活用

MySQL Tips

実務で使ってつまずいた点、便利だった点を羅列していきます。


①リネームのAS


select句でasでリーネームした、名前はwhere句では使えない。
select句でasでリーネームした、名前はhaving句では使える。

これは駄目
select COLUM as RingiNo,
from TABLEA
where RingiNo!= 0000000000


こちらは正しい


select COLUM as RingiNo,
from TABLEA
having RingiNo!= 0000000000


②SUBSTRING_INDEX


MySQL ポケットリファレンス (Pocket Reference)
[アマゾン](goo.gl/HLPWW7)では載ってなかったので。


SUBSTRING_INDEX(カラム名,区切り文字,配列番号)


データの例、日付比較をしたい。

 

   

CreateDate ReportDate
2017-05-01 2017-05-02 11:00

実際の使い方(一部)


where CreateDate < substring_index(ReportDate,' ',1)

 

参照:
[いざという時便利? なMySQL文字列関数10選](http://ryo511.blog.jp/archives/29043641.html)

 

③集計(SUM)する際, GROUP BYには集計対象以外の"すべて"の引数を入れる

 

企業CD 企業名 子会社id 従業員数
0100CD 良い会社 A001 10
0100CD 良い会社 A002 20
0100CD 良い会社 A003 30
0200CD 黒い会社 A004 10
0200CD 黒い会社 A005 10

以下の結果を得たい

企業CD 企業名 従業員数
0100 良い会社 60
0200/td> 黒い会社 20

駄目な例


SELECT 企業CD,企業名,SUM(従業員数)
GROUP 企業CD

よい例

SELECT 企業CD,企業名,SUM(従業員数)
GROUP 企業CD, 企業名

 

企業CDと企業名が1:1の関係のときは、
ついつい企業名をGROUP BY の引数からはずしてしまうのは、私だけ?