Neo Inspiration

Avatar

中の人:jakkrokk (HN統一しました) がphp,javascript,air,flex などなど好き勝手書いてます。仕事は主にWEBシステムの設計と開発、SEO全般など。

MYSQL で IF(CASE)文が便利

PLでしかできないとおもっていたんですが、
実はMYSQLでも CASE って使えるんですね。

これはめちゃくちゃ便利なので、メモメモ。

例えば

tableA に 性別カラム (clmA) (1=男,2=女,3=その他)があって

男のレコードの数
女のレコードの数
その他のレコードの数

を1発のSQLで出すことができます。

SELECT
count( CASE WHEN clmA=1 THEN 1 ELSE null END ) as “Men”
count( CASE WHEN clmA=2 THEN 1 ELSE null END ) as “Women”
count( CASE WHEN clmA=3 THEN 1 ELSE null END ) as “Others”
FROM tableA

ほかにも

CASE WHEN 1>0 THEN “true” ELSE “false”

みたいな書き方も可能だし、
もちろんネストも可能。

しかも意外と処理も早いので、
わりとヘビーなDBじゃない限り実用に耐えうるきがする。

他にも色々と使えそうな演算子があったので、
一度きちんと勉強したほうがよさそうだなー

関連記事:

2 Comments

  1. tomo

    CASEって便利ですよねー
    SQL-92に入っているので主要なデータベースなら使えるのでは?

  2. Jakk

    コメントありがとうございます。

    >SQL-92に入っているので主要なデータベースなら使えるのでは?
    どうもDB関係うとくてあれだったんですが、
    SQLの概念というかポジションというか
    そういうのがわかっていないと
    こういう理解はできないのかもしれないですねー

    ちゃんと勉強します(・w・

Twitter