すべてのプロダクト
Search
ドキュメントセンター

OpenSearch:SELECT クエリ文

最終更新日:Apr 01, 2026

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;