Mysql LEFT JOIN和SUM并显示0而不是NULL

Her*_*den 7 mysql sum left-join

我有第一个名为"orders"的表和第二个名为"details"的表

orders :
order_id
1
2
3

details :
id | order_id | qty
1  |  1       | 2
2  |  1       | 3
Run Code Online (Sandbox Code Playgroud)

我如何显示如下?

order_id | total
1        | 5
2        | 0
3        | 0
Run Code Online (Sandbox Code Playgroud)

我试过这个查询但是没有用:

SELECT *, SUM(qty) AS total
FROM order o
LEFT JOIN details d
  ON o.order_id = d.order_id
Run Code Online (Sandbox Code Playgroud)

hel*_*ode 13

试试这个:

SELECT o.order_id, IFNULL(SUM(d.qty),0) AS total
FROM orders o
    LEFT JOIN details d ON o.order_id = d.order_id
 GROUP BY order_id
Run Code Online (Sandbox Code Playgroud)


SQL*_*hao 5

这将做你要求的.如果没有明细记录的订单,它将用0替换空值.

SELECT o.order_id, 
  coalesce(sum(d.qty), 0)
from orders o
left join details d
  on o.order_id = d.order_id
group by o.order_id;
Run Code Online (Sandbox Code Playgroud)

链接到SQL小提琴示例.