セット操作

TiDBは、UNION、EXCEPT、およびINTERSECT演算子を使用した3つの集合演算をサポートしています。セットの最小単位はSELECTステートメントです。

UNIONオペレーター

数学では、2つのセットAとBの和集合は、AまたはBにあるすべての要素で構成されます。次に例を示します。

select 1 union select 2; +---+ | 1 | +---+ | 2 | | 1 | +---+ 2 rows in set (0.00 sec)

TiDBは、 UNION DISTINCTつとUNION ALLのオペレーターの両方をサポートします。 UNION DISTINCTは結果セットから重複レコードを削除し、 UNION ALLは重複を含むすべてのレコードを保持します。 TiDBではデフォルトでUNION DISTINCTが使用されます。

create table t1 (a int); create table t2 (a int); insert into t1 values (1),(2); insert into t2 values (1),(3);

UNION DISTINCTクエリとUNION ALLクエリの例は、それぞれ次のとおりです。

select * from t1 union distinct select * from t2; +---+ | a | +---+ | 1 | | 2 | | 3 | +---+ 3 rows in set (0.00 sec) select * from t1 union all select * from t2; +---+ | a | +---+ | 1 | | 2 | | 1 | | 3 | +---+ 4 rows in set (0.00 sec)

EXCEPT演算子

AとBが2つのセットである場合、EXCEPTは、AにはあるがBにはない要素で構成されるAとBの差分セットを返します。

select * from t1 except select * from t2; +---+ | a | +---+ | 2 | +---+ 1 rows in set (0.00 sec)

EXCEPT ALL演算子はまだサポートされていません。

INTERSECT演算子

数学では、2つのセットAとBの共通部分は、AとBの両方にあるすべての要素で構成され、他の要素は含まれません。

select * from t1 intersect select * from t2; +---+ | a | +---+ | 1 | +---+ 1 rows in set (0.00 sec)

INTERSECT ALL演算子はまだサポートされていません。 INTERSECT演算子は、EXCEPTおよびUNION演算子よりも優先されます。

select * from t1 union all select * from t1 intersect select * from t2; +---+ | a | +---+ | 1 | | 1 | | 2 | +---+ 3 rows in set (0.00 sec)

括弧

TiDBは、括弧を使用して集合演算の優先順位を指定することをサポートしています。括弧内の式が最初に処理されます。

(select * from t1 union all select * from t1) intersect select * from t2; +---+ | a | +---+ | 1 | +---+ 1 rows in set (0.00 sec)

Order ByLimitを使用する

TiDBは、セット操作でのORDER BYつまたはLIMITの句の使用をサポートしています。これらの2つの句は、ステートメント全体の最後にある必要があります。

(select * from t1 union all select * from t1 intersect select * from t2) order by a limit 2; +---+ | a | +---+ | 1 | | 1 | +---+ 2 rows in set (0.00 sec)

このページは役に立ちましたか?

Playground
新規
登録なしで TiDB の機能をワンストップでインタラクティブに体験できます。
製品
TiDB Cloud
TiDB
価格
PoC お問い合わせ
エコシステム
TiKV
TiFlash
OSS Insight
© 2024 PingCAP. All Rights Reserved.
Privacy Policy.