左连接不列出多行

man*_*dza 0 mysql sql join left-join

我有问题列出两个表中的多行.我做了研究,但没有找到符合我需求的解决方案. LEFT JOIN的多次使用仅带来一行,这与我的问题类似.SQL查询如何从多个表中返回数据也没有帮助我:)

这就是我拥有的和我想要的.例如,我有两张桌子; 产品和数量.

product -> id - name
amount  -> id - pid - color - amount

product -> 1  - Book
           2  - Door
           3  - Table
amount  -> 1  - 1 - red - 5
           2  - 1 - blue- 10
           3  - 3 - green - 3
Run Code Online (Sandbox Code Playgroud)

这是我运行的查询没有问题:

SELECT product.id AS pid, 
product.name AS pname, 
sum(amount.amount) AS amnt 
FROM product 
LEFT JOIN amount ON product.id=amount.pid 
WHERE product.id='1'
Run Code Online (Sandbox Code Playgroud)

这是查询我遇到的问题:

SELECT product.id AS pid, 
product.name AS pname, 
sum(amount.amount) AS amnt 
FROM product LEFT JOIN amount ON product.id=amount.pid 
WHERE product.name LIKE '%o%'
Run Code Online (Sandbox Code Playgroud)

第二个查询列表只有一行,但我希望这个结果:

row1: 1 - Book - 15
row2: 2 - Door - null
Run Code Online (Sandbox Code Playgroud)

小智 6

尝试使用group by:

SELECT product.id AS pid, product.name AS pname, sum(amount.amount) AS amnt FROM product LEFT JOIN amount ON product.id=amount.pid WHERE product.name LIKE '%o%' GROUP BY product.id
Run Code Online (Sandbox Code Playgroud)

原因:由于sum()是一个聚合函数,因此需要知道要总结哪些元素.否则它将总结为一个值(你得到).

有关详细信息,请参阅手册中的修改器分组.