【问题标题】: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 列?

【问题讨论】:

标签: mysql sql join


【解决方案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 等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-29
  • 2022-01-11
  • 2015-07-09
  • 1970-01-01
  • 1970-01-01
  • 2021-12-05
相关资源
最近更新 更多