我有两个表:“公司”和“订单”。第一个包含公司信息,第二个包含与公司发出的所有订单。 (订单
.公司
= 公司
.ID
)。
我正在第一个表上进行查询,例如纽约市的所有公司。我想与 order
表进行联接,以便它立即显示公司的订单数量。我可以用一个简单的 JOIN 查询来做到这一点,但是,它不包括 0。例如,如果一家公司还没有订单,那么它根本不会显示,而它应该在 0 个订单的列表中。
期望的最终结果:
----------------------------------------
| ID | Name | ... | Orders |
----------------------------------------
| 105 | Company A | ... | 14 |
| 115 | Company B | ... | 5 |
| 120 | Company C | ... | 0 |
| 121 | Company D | ... | 0 |
----------------------------------------
提前致谢!
最佳答案
这是一个带有聚合的左连接
:
SELECT c.ID, c.Name, count(o.company) as total
FROM companies c left outer join
orders o
on c.id = o.company
WHERE c.city = 'New York'
GROUP BY c.ID;
在 MySQL 中,最好避免在 from
子句中使用子查询(如果可能),因为实际上会创建派生表。
COUNT()
表达式通过计算用于连接的 id 字段中非空值的数量来计算匹配的数量。
关于mysql - MySQL如何合并连接表的行数,包括0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18572857/