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()是一个聚合函数,因此需要知道要总结哪些元素.否则它将总结为一个值(你得到).
有关详细信息,请参阅手册中的修改器分组.