【文字が入力されているカラムだけ抽出】SQLで文字が入力されていないカラムは除外してselectする。

今回はテーブルの中身に何が入っているのか調べるタイミングがありました。

その際にカラムの中には何も入っていない時と入っている時があるカラムがありました。

カラムの中には何が入っているのだろう。そうおもってSQLを調べたのでまとめます。

NULL以外を抽出する

何か文字が入っている列を抽出します。

今回例として以下のテーブルを使いますね。

class_score テーブル

IDnamescore
1山田50
2田中 
3小谷 
4中島50
5山田20
6山本10
7芦田 

こんな感じにテーブルがあったとします。

その時にscoreカラムに何かしら入力がされている場合のみをselectしようと思います。

SELECT 
    *
FROM
    class_score 
WHERE 
    score IS NOT NULL 
Code language: PHP (php)

もし、空白行も除外したい場合には以下になります。

SELECT 
    *
FROM
    class_score 
WHERE 
    score IS NOT NULL 
 AND
    score != ''
Code language: PHP (php)

null値と空白は違うので注意です!

すると結果はこんな感じです。↓

IDnamescore
1山田50
4中島50
5山田20
6山本10

点数をGROUP BYしたい

groupbyすることで重複するモノは合わせられます。

なので人の名前関係なく、何点があるのか見てみましょう↓

SELECT 
    score
FROM
    class_score
group BY 
    score;

すると↓

score
50
20
10

50点の人、20点の人、10点の人がいることがわかります。

今回の例がわかりにくい気がする…

が、切り替えて。そしたら今度50点の人が何人いるのか気になりますよね。

ということでcountを使います。

SELECT 
    score,
    count(*) 
FROM 
    class_score 
group BY
    score 
ORDER BY 
    COUNT(*) DESC

ついでに結果が多い順番に並べます。

  • 降順(大きいのから順番)DESC
  • 昇順(小さいものから順番)ASC

を使います。

そしてSQLの結果がこちら!

scorecount
502
201
101

ってな感じでSQLが使えるわけです。

便利ですね~

まとめ

毎回SQLを使うときには調べているので基本的なSQL文は覚えていきたい。

そう願うばかりです。

コメントを残す

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

CAPTCHA