sql - Redshift 左外连接忽略空值

标签 sql left-join amazon-redshift

作为背景,我已经设置了 100 个 redshift 查询,比这复杂得多,但我认为我必须遗漏一些简单的东西。

我在表 1 和表 2 之间进行左外连接。这些表本质上是这样的:

Table1
Col1  Col2 Col3
A     C    E
A     D    F

Table2
Col 1 Col2 Col3
A     C    Z

我没有 where 语句。我的声明是:
on Table1.Col1 = Table2.Col1 and Table1.Col2 = Table2.Col2

我的结果表是:
ResultTable:
Col1 Col2 Col3 Col4
A    C    E    Z

我期待:
ExpectedTable:
Col1 Col2 Col3 Col4
A    C    E    Z
A    D    F    Null

我错过了什么?谢谢。

最佳答案

这可能不是您的问题,但如果连接中使用的任何列为空,即使连接两侧的列值为空,Redshift 也不会使用相等运算符匹配记录。

为了处理这个问题,为每个连接添加一个或条件,检查双方是否为空。

例如((a.col1 = b.col1) or (a.col1 is null and b.col1 is null))

关于sql - Redshift 左外连接忽略空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28080883/

相关文章:

SQL使用CASE WHEN检查分区中是否存在没有任何JOIN的值

sql - Postgres 在指定时间触发

mysql - 在 MySQL 中,如何使用连接表中的单行来过滤掉 GROUP_CONCAT 中不需要的日期?

mysql - Wordpress/MySql 查询未从 JOIN 的 LEFT 部分生成所有结果

postgresql - 物化 View 的调度程序 Postgresql + Redshift

mysql - 从 S3 文件构建临时表到 Redshift

sql - 将数据从一个表更新到另一个表(在数据库中)

mysql - SUBQUERY 用于汇总行

mysql - 获取最后一次对话

amazon-s3 - 从 Oracle 表流式传输到 Redshift