我正在尝试编写一个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中实现这个逻辑?
首先,请注意在JOIN
子句中使用除了相等之外的任何比较运算符通常会降低查询的性能,我个人认为它的风格很差。毕竟,它是一个JOIN
子句而不是WHERE
子句,这意味着它应该告诉DBMS哪些行“链接”在一起(而不是哪些行不“链接”)。
即使DBMS允许在JOIN
子句中使用各种比较运算符,也是如此。
话虽如此,只需将!=
比较转换为WHERE
条款(由于上述原因,它仍属于任何地方):
SELECT *
FROM tb1
LEFT JOIN tb2
ON tb1.id=tb2.id
WHERE tb1.pid!=tb2.pid;
这将产生与原始查询完全相同的结果。