首页 > 解决方案 > 返回计数作为附加列

问题描述

我对 MySQL 有点陌生,但我不太清楚如何做到这一点:基本上,我有两张表:一张是公司表,一张是位置表。位置表具有公司的外键,因此公司可以有多个位置。我有一个简单的选择查询,它返回公司 ID 和位置 ID,如下所示:

SELECT location.id as location_id, company.id as company_id FROM company 
INNER JOIN location ON (location.company_id = company.id);

我想知道是否有办法将位置数量也作为额外的列返回。它会返回如下内容:

number_of_locations |  company_id | location_id
2 | 1 | 1
2 | 1 | 2
1 | 2 | 3
2 | 4 | 5
2 | 4 | 6

谢谢!

标签: mysqlsqlmariadb

解决方案


只需使用窗口函数:

select t.*, count(*) over (partition by company_id) as number_of_locations
from t;

推荐阅读