SQL 加入 Table A 列到 Table B 列 A 或 B
SQL Join Table A Column A to Table B Column A or B
我有 2 个 table - 一个支出 Table 和一个销售 Table
花费 Table 架构:
Spend_ID,
Spend_amount
销售额Table 架构:
Sales_ID_A,
Sales_ID_B,
Sales_amount
我想将支出 table 与销售额 table 进行左连接。来自支出 table 的连接键是 Spend_ID,当它与 Sales_ID_A 或 Sales_ID_B 中的值相匹配时我想加入,即我的销售匹配键 table 在 2 列中。因此,在某种程度上,它就像将 'or' 条件应用于销售 table Sales_ID_A 或 Sales_ID_B 的连接。如果在 Sales_ID_A 中找到匹配项,则无需检查 Sales_ID_B。如果在 Sales_ID_A 中找不到匹配项,则只检查 Sales_ID_B。我如何使用 SQL 实现此目的?
示例数据说明:
See screenshot
名为 sales_id_a
和 sales_id_b
的列实际上是支出 ID,最好称为 spend_id_a
和 spend_id_b
。
你想加入第一个ID,但如果为空,你想加入第二个ID。为此使用 COALESCE
:
select *
from sales
left join spend on spend.spend_id = coalesce(sales.sales_id_a, sales.sales_id_b)
我有 2 个 table - 一个支出 Table 和一个销售 Table
花费 Table 架构: Spend_ID, Spend_amount
销售额Table 架构: Sales_ID_A, Sales_ID_B, Sales_amount
我想将支出 table 与销售额 table 进行左连接。来自支出 table 的连接键是 Spend_ID,当它与 Sales_ID_A 或 Sales_ID_B 中的值相匹配时我想加入,即我的销售匹配键 table 在 2 列中。因此,在某种程度上,它就像将 'or' 条件应用于销售 table Sales_ID_A 或 Sales_ID_B 的连接。如果在 Sales_ID_A 中找到匹配项,则无需检查 Sales_ID_B。如果在 Sales_ID_A 中找不到匹配项,则只检查 Sales_ID_B。我如何使用 SQL 实现此目的?
示例数据说明:
See screenshot
名为 sales_id_a
和 sales_id_b
的列实际上是支出 ID,最好称为 spend_id_a
和 spend_id_b
。
你想加入第一个ID,但如果为空,你想加入第二个ID。为此使用 COALESCE
:
select *
from sales
left join spend on spend.spend_id = coalesce(sales.sales_id_a, sales.sales_id_b)