如何在 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 中实现此逻辑?

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

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

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

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

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

最新更新