连接具有相同标题但在不同表中的两列

Posted

技术标签:

【中文标题】连接具有相同标题但在不同表中的两列【英文标题】:join two columns with same title but in different table 【发布时间】:2014-08-12 11:40:30 【问题描述】:

我有一张表pur,其值为

CUST_ID AMOUNT 
1    100                                   
3     50                                   
1    200                                   
1    500
3     20

cus 的值为:

CUST_ID
1
2
3

我该如何展示这个:

 CUST_ID   Total_AMOUNT
 2          0
 3          70
 1          800

简单地说,我如何显示cus 表中的 2 列?

【问题讨论】:

RTM:join syntax 和 aggregate functions 【参考方案1】:

您可以使用LEFT JOIN,然后通过对具有相同CUST_ID 的行进行分组来获得AMOUNT 中的SUM

SELECT t2.CUST_ID
     , COALESCE(SUM(t1.AMOUNT), 0) AS TOTAL
FROM cus t2 LEFT JOIN pur t1 ON t1.CUST_ID = t2.CUST_ID
GROUP BY  t2.CUST_ID
ORDER BY TOTAL

SQLFiddle

【讨论】:

非常感谢!它有效,但无法弄清楚为什么当我已经将数量定义为 NOT NULL 时,反对 2 的值显示为 NULL @user3764208 :当您使用 LEFT JOIN 时,右侧 (CUST_ID = 2) 表中不存在的值将替换为 NULL。然后您尝试SUM(NULL),它以AMOUNT 列中的NULL 值结尾。正如您在我的回答中看到的那样,您可以轻松检查并替换为0,使用COALESCECASEIF 等。

以上是关于连接具有相同标题但在不同表中的两列的主要内容,如果未能解决你的问题,请参考以下文章

如何基于每个数据框中具有不同名称的两列将两个数据框与 dplyr 连接起来? [复制]

UNION 语句连接同一个表中的两列

显示来自两个不同表的两列之间的差异(比较表)

Mysql比较两个表中的两列

获取存储在另一个表中的列的定义而不连接两次

如何在 Visual Studio 2019 的 Datagrid 视图中连接 MySQL DataTable 中的两列?