このトピックでは、テーブル内のデータのクエリを実行するための SELECT 文の実行方法について説明します。
前提条件
マッピングテーブルが作成されています。
テーブルを使用してデータのクエリを実行する場合は、「テーブルのマッピングテーブルを作成する」をご参照ください。
多次元インデックスを使用してデータのクエリを実行する場合は、「多次元インデックスのマッピングテーブルを作成する」をご参照ください。
使用上の注意
データテーブルのマッピングテーブルを作成せずに、DESCRIBE や SELECT などの SQL 文を直接使用してデータテーブル内のデータのクエリを実行する場合、システムはデータテーブルのマッピングテーブルを自動的に作成します。自動的に作成されたマッピングテーブルには、データテーブルのプライマリキー列と事前定義列のみが含まれ、マッピングテーブルの属性列を更新することはできません。
データテーブルにセカンダリインデックスまたは多次元インデックスが作成されている場合、SQL 文を実行してデータテーブル内のデータのクエリを実行するときは、「インデックス選択ポリシーを指定する」必要があります。インデックス選択ポリシーには、自動選択と手動選択があります。
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。有効な値:
|
select_expr | はい |
|
table_references | はい | データのクエリを実行するテーブルに関する情報。このパラメーターの値は、 |
join_expr | いいえ | テーブルを結合するために使用される JOIN 式。形式は JOIN 関数を使用すると、2 つ以上のテーブルを結合し、結合条件とクエリ条件を満たすデータを返すことができます。詳細については、「結合」をご参照ください。 |
where_condition | いいえ | 特定の機能を実装するためにさまざまな条件を指定するために使用できる WHERE 句。
|
groupby_condition | いいえ | 集計関数で使用できる GROUP BY 句。形式は |
having_condition | いいえ | 集計関数で使用できる HAVING 句。形式は |
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;