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

问题描述 投票:1回答:1

我正在尝试编写一个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)中不等于。

有没有办法在SQL中实现这个逻辑?

azure-data-lake u-sql
1个回答
1
投票

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

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

话虽如此,只需将!=比较转换为WHERE条款(由于上述原因,它仍属于任何地方):

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

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

© www.soinside.com 2019 - 2024. All rights reserved.