如何在U-SQL中使用不等于条件?

时间:2018-09-02 08:28:01

标签: azure-data-lake u-sql

我正在尝试编写一个U-SQL查询来复制与SQL查询相同的逻辑,如下所示。

SELECT * 
FROM tb1 
LEFT JOIN tb2 
ON tb1.id=tb2.id AND tb1.pid!=tb2.pid;

由于U-SQL在连接条件(tb1.pid!=tb2.pid)中不支持不等于。

有没有办法在USQL中实现这种逻辑?

1 个答案:

答案 0 :(得分:1)

首先,请注意,在JOIN子句中使用除相等以外的任何比较运算符通常会降低查询的性能,我个人认为这是不好的样式。毕竟,它是一个JOIN子句,而不是WHERE子句,这意味着它应该告诉DBMS哪些行“链接”在一起(而不是哪些行 not “链接”)。

即使DBMS允许在JOIN子句中使用各种比较运算符,也是如此。

话虽如此,只需将!=比较移到WHERE子句中(由于上述原因,它仍然属于该子句):

SELECT * 
FROM tb1 
LEFT JOIN tb2 
ON tb1.id=tb2.id
WHERE tb1.pid!=tb2.pid;

这将产生与原始查询完全相同的结果。