JOINs
支持的JOIN类型
join 将两个或多个表的列组合成一个结果集。Databend支持以下 join 类型:
- Inner Join
- Natural Join
- Cross Join
- Left Join
- Right Join
- Full Outer Join
- Left / Right Semi-Join
- Left / Right Anti-Join
示例表
除非明确指定,本页上的join示例基于以下表:
表 "vip_info":此表存储VIP客户信息。
Client_ID | Region |
---|---|
101 | Toronto |
102 | Quebec |
103 | Vancouver |
表 "purchase_records":此表列出了所有客户的购买记录。
Client_ID | Item | QTY |
---|---|---|
100 | Croissant | 2,000 |
102 | Donut | 3,000 |
103 | Coffee | 6,000 |
106 | Soda | 4,000 |
表 "gift":此表列出了VIP客户的礼品选项。
Gift |
---|
Croissant |
Donut |
Coffee |
Soda |
Inner Join
inner join 返回满足join条件的结果集中的行。
语法
SELECT select_list
FROM table_a
[INNER] JOIN table_b
ON join_condition_1
[[INNER] JOIN table_c
ON join_condition_2]...
提示
关键字 INNER 是可选的。
当您在具有相等运算符的公共列上连接两个表时,可以使用关键字 USING 来简化语法。
SELECT select_list
FROM table_a
JOIN table_b
USING join_column_1
[JOIN table_c
USING join_column_2]...
示例
以下示例返回VIP客户的购买记录:
SELECT purchase_records.client_id,
purchase_records.item,
purchase_records.qty
FROM vip_info
INNER JOIN purchase_records
ON vip_info.client_id = purchase_records.client_id;
有关示例中表的定义,请参见 示例表。
输出:
|102|Donut|3000
|103|Coffee|6000
Natural Join
natural join 基于两个表中具有相同名称的所有列连接两个表。
语法
SELECT select_list
FROM table_a
NATURAL JOIN table_b
[NATURAL JOIN table_c]...
示例
以下示例返回VIP客户的购买记录:
SELECT purchase_records.client_id,
purchase_records.item,
purchase_records.qty
FROM vip_info
NATURAL JOIN purchase_records;
有关示例中表的定义,请参见 示例表。
输出:
|102|Donut|3,000
|103|Coffee|6,000
Cross Join
cross join 返回一个结果集,其中包括第一个表中的每一行与第二个表中的每一行连接。