MaxCompute支持SEMI JOIN(半连接)。SEMI JOIN中,右表只用于过滤左表的数据而不出现在结果集中。支持LEFT SEMI JOIN和LEFT ANTI JOIN两种语法。
LEFT SEMI JOIN
当join
条件成立时,返回左表中的数据。如果mytable1
中某行的id
在mytable2
的所有id
中出现过,则此行保留在结果集中。
示例如下。
SELECT * from mytable1 a LEFT SEMI JOIN mytable2 b on a.id=b.id;
只会返回mytable1
中的数据,只要mytable1
的id
在mytable2
的id
中出现。
LEFT ANTI JOIN
当join
条件不成立时,返回左表中的数据。如果mytable1
中某行的id
在mytable2
的所有id
中没有出现过,则此行保留在结果集中。
示例如下。
SELECT * from mytable1 a LEFT ANTI JOIN mytable2 b on a.id=b.id;
只会返回mytable1
中的数据,只要mytable1
的id
在mytable2
的id
没有出现。