SELECT
SELECT
説明
1つまたは複数のテーブル、ビュー、またはマテリアライズドビューからデータをクエリします。SELECT文は通常、以下の節で構成されています。
SELECTは独立したステートメントまたは他のステートメントにネストされた節として動作することができます。SELECT節の出力は他のステートメントの入力として使用することができます。
StarRocksのクエリ文は基本的にSQL92の標準に準拠しています。サポートされているSELECTの使用方法について簡単に説明します。
注意
StarRocksの内部テーブルのテーブル、ビュー、またはマテリアライズドビューからデータをクエリするには、これらのオブジェクトに対するSELECT権限が必要です。外部データソースのテーブル、ビュー、またはマテリアライズドビューからデータをクエリするには、対応する外部カタログに対するUSAGE権限が必要で す。
WITH
SELECT文の前に追加できる節で、SELECT内で複数回参照される複雑な式に名前を付けるためのエイリアスを定義します。
CRATE VIEWと似ていますが、節で定義されたテーブル名や列名はクエリ終了後に保持されず、実際のテーブルまたはビューの名前とは競合しません。
WITH節を使用することの利点は次のとおりです。
重複を減らし、クエリ内の重複を減らして、便利でメンテナンスしやすくします。
最も複雑なクエリの一部を別のブロックに抽象化することにより、SQLコードがより読みやすく理解しやすくなります。
例:
-- 外部レベルとして1つのサブクエリを定義し、
-- 初期ステージの UNION ALL クエリの一部としてもう1つのサブクエリを定義する。
with t1 as (select 1),t2 as (select 2)
select * from t1 union all select * from t2;
結合
結合操作は、2つ以上のテーブルからデータを結合し、それらの一部の列からなる結果セットを返します。
StarRocksでは、セルフ結合、クロス結合、インナー結合、アウター結合、セミ結合、アンチ結合をサポートしています。アウター結合には、左結合、右結合、およびフル結合が含まれます。
構文:
SELECT select_list FROM
table_or_subquery1 [INNER] JOIN table_or_subquery2 |
table_or_subquery1 {LEFT [OUTER] | RIGHT [OUTER] | FULL [OUTER]} JOIN table_or_subquery2 |
table_or_subquery1 {LEFT | RIGHT} SEMI JOIN table_or_subquery2 |
table_or_subquery1 {LEFT | RIGHT} ANTI JOIN table_or_subquery2 |
[ ON col1 = col2 [AND col3 = col4 ...] |
USING (col1 [, col2 ...]) ]
[other_join_clause ...]
[ WHERE where_clauses ]
SELECT select_list FROM
table_or_subquery1, table_or_subquery2 [, table_or_subquery3 ...]
[other_join_clause ...]
WHERE
col1 = col2 [AND col3 = col4 ...]
SELECT select_list FROM
table_or_subquery1 CROSS JOIN table_or_subquery2
[other_join_clause ...]
[ WHERE where_clauses ]
セルフ結合
StarRocksはセルフ結合をサポートしており、セルフ結合とセルフ結合の結合です。たとえば、同じテーブルの異なる列を結合します。
セルフ結合を特定する特別な構文は実際にはありません。セルフ結合の結合の両側の条件は同じテーブルから来ます。
それらには異なるエイリアスを割り当てる必要があります。
例:
SELECT lhs.id, rhs.parent, lhs.c1, rhs.c2 FROM tree_data lhs, tree_data rhs WHERE lhs.id = rhs.parent;