如何根据另一个的两列加入 table

how to join a table based on two columns of another

我有表 2:

ZIP INCOME
ZTCA5 00619 14,601
ZTCA5 12349 20,601
ZTCA5 56729 20,601
... ...
ZTCA5 34562 20,601

表 1:

ID ZIP1 ZIP2
1 00619 006190000
2 NULL 123490000
3 34562 NULL

Table2 的列比 Table1 多很多。实际的 Table1 更大,但为了示例,我将其设置为 3 行。

我想要以下结果:

ID ZIP1 ZIP2 ZIP INCOME
1 00619 006190000 ZTCA5 00619 14,601
2 NULL 123490000 ZTCA5 12349 20,601
3 34562 NULL ZTCA5 34562 20,601

ZIP2 列是 9 位邮政编码,前五个数字是我感兴趣的数字。

我尝试了以下代码(在另一个答案的帮助下):

SELECT *
FROM Table1 t2
LEFT JOIN Table2 t1
ON substr(t1.ZIP, -5)=t2.ZIP1
    OR substr(t1.ZIP,-5)=substr(t2.ZIP2,5)

我对这段代码的问题是它的行数比我原来的 Table1 多,这是不应该发生的。结果应具有与 Table1 相同的行数。我哪里错了?

您可以同时使用 SUBSTRINSTR 加入:

SELECT t1.ID, t1.ZIP1, t1.ZIP2, t2.ZIP, t2.INCOME
FROM Table1 t1
LEFT JOIN Table2 t2
    ON SUBSTR(t2.ZIP, INSTR(t2.ZIP, ' ') + 1, 5) =
       COALESCE(t1.ZIP1, SUBSTR(t1.ZIP2, 1, 5));