Kintarou'sBlog

プログラミング学習中。学習内容のアウトプットや読書で学んだことなど随時投稿!

【MySQL】IF・CASE文

こんにちは😊Kintarouです。

現在エンジニア転職を目指してプログラミング学習中です👨‍🎓
夢はフリーランスエンジニアになって働く人にとって働く事が楽しくなるシステムを作ること!
と、愛する妻と海外移住すること🗽

プログラミングや読んでいる本のことなど、ブログに書いていきます!
twitter : https://twitter.com/ryosuke_angry


今回参考にさせて頂いたサイト様🙇‍♂️ dotinstall.com


今日は簡単にMySQLのIF・CASE文をまとめます。

IF文

MySQLでIF文を使ってデータを抽出します。
今回のデータは以下です。
9つのツイートがあり、ツイート内容(message)、いいね数(likes)、位置情報(area)で構成されています。

CREATE TABLE tweets (
  id INT NOT NULL AUTO_INCREMENT,
  message VARCHAR(140), 
  likes INT,
  area VARCHAR(20),
  PRIMARY KEY (id)
);

INSERT INTO tweets (message, likes, area) VALUES 
  ('tweet-1', 12, 'Tokyo'),
  ('tweet-2', 8, 'Fukuoka'),
  ('tweet-3', 11, 'Tokyo'),
  ('tweet-4', 3, 'Osaka'),
  ('tweet-5', 8, 'Tokyo'),
  ('tweet-6', 9, 'Osaka'),
  ('tweet-7', 4, 'Tokyo'),
  ('tweet-8', 10, 'Osaka'),
  ('tweet-9', 31, 'Fukuoka');

この内容を、いいね数が10より多いかどうかで条件をつけてみます。

SELECT
  *,
  IF(likes > 10, 'A', 'B') AS rank
FROM
  tweets;

likesが10より大ければ'A'、10以下であれば'B'というrankに分ける。という内容です。

f:id:ryosuke-toyama:20201111160624p:plain

CASE文

続いてCASE文です。
いいね数が10より大きければ'A'、10以下だが5より大きければ'B'、5以下なら'C'という風に分けます。

SELECT
  *,
  CASE
    WHEN likes > 10 THEN 'A'
    WHEN likes > 5 THEN 'B'
    ELSE 'C'
  END AS rank
FROM
  tweets;

f:id:ryosuke-toyama:20201111162156p:plain

以上、どなたかの参考になれば幸いです😊