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