【发布时间】:2020-07-03 09:02:46
【问题描述】:
我有两个 Redshift 表,它们在特定日期范围内的 id 和日期上加入。
当我尝试对表进行完全外部联接时(下面的两个替代 SQL 语句),我收到以下错误:
[Amazon](500310) Invalid operation: FULL JOIN is only supported with merge-joinable join conditions; [SQL State=0A000, DB Errorcode=500310]
它适用于 LEFT-JOIN,但不适用于 FULL-OUTER。我基本上希望在其中包含所有 id 和范围,即使另一个表中没有匹配项。 我该如何解决这个错误?
表 1:
- 身份证
- colx(日期)
表 2:
- 身份证
- col2(日期范围开始)
- col3(日期范围结束)
- 某事
第一个替代连接:
SELECT *
FROM table1
FULL OUTER JOIN table2
ON (table1.id = ltrim(table2.id, '0') -- id
AND DATE(table1.colx) BETWEEN DATE(table2.col2) AND DATE(table2.col3) -- date range
)
;
第二个替代连接:(根据 AWS 文档,范围包括在内,所以语句应该有相同的结果我想)
SELECT *
FROM table1
FULL OUTER JOIN table2
ON table1.id = ltrim(table2.id, '0') -- id
AND DATE(table1.colx) >= table2.col2 -- date range beginning
AND DATE(table1.colx) <= table2.col3 -- date range ending
;
【问题讨论】:
标签: sql amazon-redshift