English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

SQLite HAVING 子句

HAVING子句を使用して、最終結果に表示されるグループの結果をフィルタリングする条件を指定できます。

WHERE子句は選択された列に条件を設定し、HAVING子句はGROUP BY子句が作成したグループに条件を設定します。

構文

以下はHAVING子句がSELECTクエリ内での位置です。

SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY

HAVING子句はGROUP BY子句の後に、使用する場合にはORDER BY子句の前に、クエリ内で必要です。以下はHAVING子句を含むSELECT文の構文です。

SELECT column1, column2
FROM table1, table2
WHERE [ conditions ]
GROUP BY column1, column2
HAVING [ conditions ]
ORDER BY column1, column2

オンラインサンプル

以下の記録を持つCOMPANYテーブルを考慮してください。

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           ポール        32          カリフォルニア  20000.0
2           アレン       25          テキサス       15000.0
3           テディ       23          ノルウェイ      20000.0
4           マーク        25          リッチ-モンド   65000.0
5           デイビッド       27          テキサス       85000.0
6           キム         22          サウス-ホール  45000.0
7           ジェームズ       24          ヒューストン     10000.0
8           ポール        24          ヒューストン     20000.0
9           ジェームズ       44          ノルウェイ      5000.0
10          ジェームズ       45          テキサス       5000.0

以下は例です。これは名称のカウントが以下より小さいことを表示します。2のレコード。

sqlite > SELECT * FROM COMPANY GROUP BY name HAVING count(name) < 2;

以下の結果が生成されます。

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
2           アレン       25          テキサス       15000
5           デイビッド       27          テキサス       85000
6           キム         22          サウス-ホール  45000
4           マーク        25          リッチ-モンド   65000
3           テディ       23          ノルウェイ      20000

以下の例では、名称のカウントが以下の値を超えることを表示します。2のレコード。

sqlite > SELECT * FROM COMPANY GROUP BY name HAVING count(name) > 2;

以下の結果が生成されます。

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
10          ジェームズ       45          テキサス       5000