Join 语句问题
SELECT <expr_list>
FROM <left_subquery>
[GLOBAL] [ANY|ALL] INNER|LEFT|RIGHT|FULL|CROSS [OUTER] JOIN <right_subquery>
(ON <expr_list>)|(USING <column_list>) ...
可以使用具体的表名来代替<left_subquery>与<right_subquery>。但这与使用SELECT * FROM table子查询的方式相同。除非你的表是[Join](../operations/table_engines/join.md 支持的JOIN类型
INNER JOINLEFT OUTER JOINRIGHT OUTER JOINFULL OUTER JOINCROSS JOIN
你可以跳过默认的OUTER关键字。
ANY 与 ALL
在使用ALL修饰符对JOIN进行修饰时,如果右表中存在多个与左表关联的数据,那么系统则将右表中所有可以与左表关联的数据全部返回在结果中。这与SQL标准的JOIN行为相同。 在使用ANY修饰符对JOIN进行修饰时,如果右表中存在多个与左表关联的数据,那么系统仅返回第一个与左表匹配的结果。如果左表与右表一一对应,不存在多余的行时,ANY与ALL的结果相同
简而言之:就是一对多时,显示一条还是显示所有条的问题
GLOBAL distribution
当使用普通的JOIN时,查询将被发送给远程的服务器。并在这些远程服务器上生成右表并与它们关联。换句话说,右表来自于各个服务器本身。
当使用GLOBAL ... JOIN,首先会在请求服务器上计算右表并以临时表的方式将其发送到所有服务器。这时每台服务器将直接使用它进行计算。
个人理解是:普通join依次join 而global join 是所有数据集中在一台,锁死缓存后join
本文深入解析SQL中的Join操作,包括INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN和CROSS JOIN等不同类型的使用场景与区别,同时探讨了ANY与ALL修饰符在一对多情况下的表现,以及GLOBAL分布对JOIN操作的影响。
1117

被折叠的 条评论
为什么被折叠?



