SELECT は、ハイパフォーマンス検索エディションにおけるすべてのクエリの基盤です。フィルタリング、集約、ソート、ページネーションなど、高度なクエリ句はすべて SELECT 文に基づいて構築されます。高度なクエリ構文の詳細については、関連トピックをご参照ください。
構文
SELECT [ DISTINCT ]
{ * | projectItem [, projectItem ]* }
FROM tableExpression
[ WHERE booleanExpression ]
[ GROUP BY { groupItem [, groupItem ]* } ]
[ ORDER BY { orderByItem [, orderByItem ]* } ]
[ HAVING booleanExpression ]
[ LIMIT number ]
[ OFFSET number ]
projectItem:
expression [ [ AS ] columnAlias ]
| tableAlias . *句
SELECT
ソーステーブルからすべての列、または特定の列セットを返します。
例 1: すべての列を返す。
SELECT f1, f2 AS ff FROM table;例 2: 特定の列を返し、エイリアスを割り当てる。
SELECT f1, f2 AS ff FROM table;例 3: 重複を除外した一意の値を返す。
SELECT DISTINCT f FROM table;WHERE
集約処理の前に行をフィルタリングします。booleanExpression の評価結果が true となる行のみが、後続の句に渡されます。
GROUP BY
指定された列で値が一致する行をグループ化します。通常、集計関数と併用されます。
SELECT f1, count(*) AS num
FROM t1
GROUP BY f1;ORDER BY
1 つ以上の列で結果セットをソートします。
HAVING
GROUP BY による集約後にグループをフィルタリングします。集計結果に対する条件には HAVING を使用してください。
WHERE 句との違い:
| 句 | 対象 | 評価済み |
|---|---|---|
WHERE | 個別の行 | 集約前 |
HAVING | 集約済みのグループ | 集約後 |
LIMIT
返される行数を制限します。
OFFSET
結果を返す前に、指定された行数をスキップします。OFFSET は、ページネーションクエリのために LIMIT と併用します。
以下の例では、サブクエリ内で各グループの行数をカウントし、num が 100 を超えるグループのみをフィルタリングしています。
SELECT * FROM (
SELECT f1, count(*) AS num
FROM t1
GROUP BY f1
) tt
WHERE tt.num > 100;