このトピックでは、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。有効な値:
|
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;