如何在MySql中选择不存在的行?

时间:2016-09-08 12:25:12

标签: mysql

我有两张桌子:

enter image description here

以下是数据:

产品

enter image description here

订单

enter image description here

我想要一个产生这个结果的查询:

enter image description here

我试过这个:

SELECT p.id, p.name, sum(o.amount) AS total
    FROM products AS p 
    INNER JOIN orders AS o ON o.product_id = p.id 
    GROUP BY p.id

但我明白了:

enter image description here

如何按预期获得结果?

3 个答案:

答案 0 :(得分:0)

你必须像这样做左外连接:

SELECT p.id, p.name, IFNULL(sum(o.amount), 0) AS total
    FROM products AS p 
    LEFT OUTER JOIN orders AS o ON o.product_id = p.id 
    GROUP BY p.id

[OUTER] -Keyword是可选的,可以省略。

看一下这个问题:MySQL: Typecasting NULL to 0

但很抱歉,这真的是如此基本,你可以用各种语言在世界各地谷歌...

答案 1 :(得分:0)

使用Left Join MySQL LEFT JOIN子句允许您查询来自两个或多个数据库表的数据。 LEFT JOIN子句是SELECT语句的可选部分,它出现在FROM子句之后。 enter image description here

答案 2 :(得分:0)

SELECT p.id,p.name,(SELECT SUM(o.amount) FROM orders o WHERE o.product_id=p.id) total
FROM products p