3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQLで複雑なデータの取得方法

Posted at

下記の記事でSQL文の基礎について投稿しました。
(https://qiita.com/yyy752/items/78896d2af72edf318c87)
SQL文にWHERE 条件式を加えることで、条件を絞ってデータを取得できるのですが、他にも複雑なデータを取得する方法があるので、今回はそれを紹介します。

複雑なデータを取得できるSQL文

文法 意味
AND, OR 取得するデータの条件同士をつなげる
BETWEEN 指定した値の範囲と比較する
IN 指定したリストの値が含まれるか比較する
LIKE パターンに合致するか比較する
LIMIT 取得するデータの行数の上限を設定する
GROUP BY データをグループ化する
HAVING グループ化したデータに対して取得する条件を設定する

今回は例文は除いて基本文のみ紹介します。

AND,OR 取得するデータの条件同士をつなげる

AND:かつ OR:もしくは という意味です。
SELECT カラム名 FROM データベース名.テーブル名 WHERE 条件式① ANDもしくはOR 条件式②

BETWEEN 指定した値の範囲と比較する

指定の範囲に含まれるデータを抽出したい時に使用します。
SELECT カラム名①,② FROM DB名.テーブル名 WHERE カラム名 BETWEEN 最小値 AND 最大値
最初に取得したいカラム名を指定して、WHEREから条件を絞りたいカラム名と範囲を指定します。

IN 指定したリストの値が含まれるか比較する

指定したリストに含まれるデータを抽出したい時に使用します。
SELECT カラム名 FROM DB名.テーブル名 WHERE カラム名 IN ('値','値','値')
最初に取得したいカラム名を指定して、WHEREから条件を絞りたいカラム名と取得したい値を指定します。
また、NOT INにすることで指定した値に該当しないデータを取得できます。

LIKE パターンに合致するか比較する

特定の文字列パターンに合致するデータを抽出したい時に使用します。
SELECT カラム名① FROM DB名.テーブル名 WHERE カラム名 LIKE 'パターン%もしくは_'
%任意の0文字以上の文字列
→A%Bの場合、AB、ACB、ADDB、ACHDBのように'Aで始まり、Bで終わるデータ'を取得する。
_任意の1文字
→A_Bの場合、ASB、ADB、AFBのように'AとBの間に一文字のみ入るデータ'が取得される。

LIMIT 取得するデータの行数の上限を設定する

抽出できるレコード数の上限を設定したい時に使用します。
SELECT カラム名 FROM DB名.テーブル名 LIMIT 最大件数

GROUP BY データをグループ化する

特定のカラムの値を基準にグループ化してデータを抽出したい時に使用します。
SELECT カラム名 FROM DB名.テーブル名 GROUP BY カラム名,カラム名

SELECT文を使ってグループ単位のデータを取得するとき、SQLに用意されている関数を使用して、集計などの計算結果も抽出することができます。
SELECT name, sum(sales) FROM shop.users group by name;
例えば、これでname(従業員)ごとのsales(売上)の合計値を抽出できます。

HAVING グループ化したデータに対して取得する条件を設定する

グループ化したデータに対して更に条件を指定してデータを絞り込みたい時に使用します。
SELECT カラム名 FROM DB名.テーブル名 GROUP BY カラム名 HAVING 条件式
SELECT カラム名 FROM DB名.テーブル名 WHERE 条件式① GROUP BY カラム名 HAVING 条件式
HAVINGの後に記述する条件式は、WHEREの場合と同様に記述可能

SELECT name, sum(sales) FROM shop.users group by name HAVING sum(sales) >= 2000;
例えば、これでname(従業員)ごとのsales(売上)の合計が2000以上のデータを取得できます。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?