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

Tablestore:データのクエリ

最終更新日:Dec 28, 2024

このトピックでは、SELECT ステートメントを実行してテーブル内のデータをクエリする方法について説明します。

準備

テーブル内のデータをクエリする場合は、テーブルのマッピングテーブルを作成します。詳細については、テーブルのマッピングテーブルの作成を参照してください。検索インデックスを使用してデータをクエリする場合は、検索インデックスのマッピングテーブルを作成します。詳細については、検索インデックスのマッピングテーブルの作成を参照してください。

使用上の注意

SELECT ステートメントの句は、WHERE > GROUP BY > HAVING > ORDER BY > LIMIT および OFFSET の順に実行されます。

構文

SELECT
    [ALL | DISTINCT | DISTINCTROW]
    select_expr [, select_expr] ...
    [FROM table_references | join_expr]
    [WHERE where_condition]
    [GROUP BY groupby_condition]
    [HAVING having_condition]
    [ORDER BY order_condition]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]

パラメーター

パラメーター

必須

説明

ALL | DISTINCT | DISTINCTROW

いいえ

重複するフィールド値を削除するかどうかを指定します。デフォルト値:ALL。有効な値:

  • ALL:重複する値を含む、指定されたフィールドのすべての値を返します。

  • DISTINCT:重複する値を削除し、フィールドの個別値のみを返します。

  • DISTINCTROW:重複する値を含む行を削除し、フィールドの個別値のみを含む行を返します。

select_expr

はい

column_name[, column_name][, column_exp],.. 形式の列名または式。詳細については、列式 (select_expr)を参照してください。

table_references

はい

データをクエリするテーブルに関する情報。このパラメーターの値は、テーブル名または table_name | select_statement 形式の SELECT ステートメントです。詳細については、テーブル情報 (table_references)を参照してください。

join_expr

いいえ

テーブルを結合するために使用される JOIN 式。形式は table_references join_type table_references [ ON join_condition | USING ( join_column [, ...] ) ] です。このパラメーターは、JOIN 関数を使用する場合にのみ必須です。

JOIN 関数を使用すると、2 つ以上のテーブルを結合し、結合条件とクエリ条件を満たすデータを返すことができます。詳細については、結合を参照してください。

where_condition

いいえ

特定の機能を実装するためにさまざまな条件を指定するために使用できる WHERE 句。

  • WHERE 句で関係演算子を使用して、指定された条件を満たすデータをクエリできます。形式は column_name operator value [AND | OR] [column_name operator value] です。詳細については、WHERE 句 (where_condition)を参照してください。

  • WHERE 句で一致クエリまたは一致フレーズクエリの条件を指定して、全文検索を実行できます。詳細については、全文検索を参照してください。

  • WHERE 句で ARRAY_EXTRACT(col_name) 関数を使用して、検索インデックスでサポートされている ARRAY 型のデータをクエリできます。詳細については、検索インデックスの配列型を参照してください。

    関数の col_name は、クエリする ARRAY フィールドの名前を指定します。

  • WHERE 句で演算子または NESTED_QUERY(subcol_column_condition) 関数を使用して、検索インデックスでサポートされている NESTED 型のデータをクエリできます。詳細については、検索インデックスでサポートされている NESTEDを参照してください。

    関数の subcol_column_condition は、同じネストレベルの子フィールドのデータをクエリするための条件を指定します。

  • WHERE 句で仮想列を使用して、指定された条件を満たすデータをクエリできます。詳細については、検索インデックスの仮想列を参照してください。

groupby_condition

いいえ

集計関数で使用できる GROUP BY 句。形式は column_name です。詳細については、GROUP BY 句 (groupby_condition)を参照してください。

having_condition

いいえ

集計関数で使用できる HAVING 句。形式は aggregate_function(column_name) operator value です。詳細については、HAVING 句 (having_condition)を参照してください。

order_condition

いいえ

column_name [ASC | DESC][,column_name [ASC | DESC],...] 形式の ORDER BY 句。詳細については、ORDER BY 句 (order_condition)を参照してください。

row_count

いいえ

クエリで返す最大行数。

offset

いいえ

クエリでスキップされるデータ。デフォルト値:0。

列式 (select_expr)

select_expr を使用して、クエリする列を指定できます。 select_expr を使用する場合、次の点に注意してください。

  • ワイルドカード (*) を使用してすべての列をクエリできます。 WHERE 句を使用してクエリ条件を指定することもできます。

    SELECT * FROM orders;

    次の例は、WHERE 句を使用してクエリ条件を指定する方法を示しています。

    SELECT * FROM orders WHERE orderprice >= 100;
  • 列名を使用して、クエリする列を指定できます。

    SELECT username FROM orders;
  • JSON 関数を使用して JSON オブジェクトをクエリできます。

    SELECT coljson, coljson->>'$.a' AS subdoc FROM json_table WHERE pkint = 1;

    詳細については、JSON 関数を参照してください。

テーブル情報 (table_references)

table_references を使用して、データをクエリするテーブルを指定できます。

SELECT orderprice FROM orders;

WHERE 句 (where_condition)

where_condition を使用して、指定された条件を満たすデータをクエリできます。 where_condition を使用する場合、次の点に注意してください。

  • 算術演算子や関係演算子などの演算子を使用して構築された単純式を使用できます。

    SELECT * FROM orders WHERE username = 'lily';
    SELECT * FROM orders WHERE orderprice >= 100;
  • 論理演算子を使用して構築された複合式を使用できます。

    SELECT * FROM orders WHERE username = 'lily' AND orderprice >= 100;

演算子の詳細については、SQL 演算子を参照してください。

GROUP BY 句 (groupby_condition)

groupby_condition を使用して、指定された条件に基づいて SELECT ステートメントの結果セットの行データをグループ化できます。 groupby_condition を使用する場合、次の点に注意してください。

  • フィールドごとに行データをグループ化できます。

    SELECT username FROM orders GROUP BY username;
  • グループ化された列で集計関数を使用できます。

    SELECT username,COUNT(*) FROM orders GROUP BY username;
  • SELECT ステートメントで集計関数が実行されていない列を GROUP BY 句に追加する必要があります。

    SELECT username,orderprice FROM orders GROUP BY username,orderprice;

集計関数の詳細については、集計関数を参照してください。

HAVING 句 (having_condition)

having_condition を使用して、WHERE 句と GROUP BY 句を使用して取得した結果セットでグループ化した行データをフィルタリングできます。グループ化した行データは、指定された条件に基づいてフィルタリングされます。

ほとんどの場合、HAVING 句は集計関数とともに使用してデータをフィルタリングします。

SELECT username,SUM(orderprice) FROM orders GROUP BY username HAVING SUM(orderprice) < 500;

ORDER BY 句 (order_condition)

order_condition を使用して、指定されたフィールドとソート方法に基づいてクエリの結果セットの行データをソートできます。 having_condition を使用する場合、次の点に注意してください。

  • ASC または DESC キーワードを使用してソート方法を指定できます。デフォルトでは、データは昇順 (ASC) でソートされます。

    SELECT * FROM orders ORDER BY orderprice DESC LIMIT 10;
  • データをソートする基準となる複数のフィールドを指定できます。

    SELECT * FROM orders ORDER BY username ASC,orderprice DESC LIMIT 10;
  • LIMIT を使用して、返す行数を制限できます。

    SELECT * FROM orders ORDER BY orderprice LIMIT 10;