MaxCompute の JOIN 操作では、複数の結合条件を指定できますが、ON 条件なしで結合するデカルト積には対応していません。

関数の定義
join_table:
        table_reference join table_factor [join_condition]
        | table_reference {left outer|right outer|full outer|inner} join table_reference join_condition
    table_reference:
        table_factor
        | join_table
    table_factor:
        tbl_name [alias]
        | table_subquery alias
        | ( table_references )
    join_condition:
        on equality_expression ( and equality_expression )*
equality_expression は等価式です。
LEFT OUTER JOIN: 右テーブル (sale_detail) に一致するレコードがない場合でも、 左テーブル (shop) からすべてのレコードが返されます。
select a.shop_name as ashop, b.shop_name as bshop from shop a
        left outer join sale_detail b on a.shop_name=b.shop_name;
    -- テーブル shop とテーブル sale_detail には、どちらも列 shop_name があり、select 句ではエイリアスを使用して区別する必要があります。

RIGHT OUTER JOIN: 右結合を示します。 左テーブルに一致するレコードがない場合でも、右テーブルからすべてのレコードが返されます。

例:
select a.shop_name as ashop, b.shop_name as bshop from shop a
        right outer join sale_detail b on a.shop_name=b.shop_name;

FULL OUTER JOIN: 全結合を示します。 左右両方のテーブルからすべてのレコードが返されます。

例:
select a.shop_name as ashop, b.shop_name as bshop from shop a
        full outer join sale_detail b on a.shop_name=b.shop_name;
テーブルに一致するレコードが 1 つ以上ある場合、INNER JOIN はその行を返します。 キーワード INNER は、省略できます。
select a.shop_name from shop a inner join sale_detail b on a.shop_name=b.shop_name;
select a.shop_name from shop a join sale_detail b on a.shop_name=b.shop_name;
JOIN 条件には、and を使用した等価結合条件のみ使用できます。 MAPJOIN でのみ、非等価結合条件や、or を使用して複数の結合条件を指定することができます。
select a.* from shop a full outer join sale_detail b on a.shop_name=b.shop_name
        full outer join sale_detail c on a.shop_name=c.shop_name;
    -- 複数の結合例に対応
select a.* from shop a join sale_detail b on a.shop_name ! = b.shop_name;
    -- エラーが返されます。非等価結合条件はサポートされていません。
IMPLICIT JOIN: MaxCompute は、次の JOIN メソッドに対応しています。
SELECT * FROM table1, table2 WHERE table1.id = table2.id;
--以下の実行結果と同じです。
SELECT * FROM table1 JOIN table2 ON table1.id = table2.id;