gpt4 book ai didi

mysql - MySQL如何合并连接表的行数,包括0?

转载 作者:行者123 更新时间:2023-11-29 13:37:16 25 4
gpt4 key购买 nike

我有两个表:“公司”和“订单”。第一个包含公司信息,第二个包含与公司发出的所有订单。 (订单.公司 = 公司.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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com