MySQL为每个公司ID基于多个其他行插入新行

时间:2013-12-01 19:29:19

标签: mysql sql

我有一个拥有许多公司的MySQL数据库(数百个)。对于每个公司,我需要在一个新表中插入一行,该表组合了另一个表中两行的数据。有点像这样:

For each company in Companies{
  Get min(AgeInMonths) as YoungestGroup from AgeGroups where companyid = company;
  Get max(AgeInMonths) as OldestGroup from AgeGroups where companyid = company;
  Insert YoungestGroup,OldestGroup,CompanyId into CombinedAgeGroups
}

我的表格结构(基本上)如下:

公司

  • CompanyId
  • 公司名称

AgeGroups

  • AgeGroupId
  • CompanyId
  • AgeInMonths

CombinedAgeGroups

  • CompanyId
  • YoungestGroupId
  • OldestGroupId
  • MaxGroupSize

因此,在CombinedAgeGroups表中,我需要为每个公司提供一行。如何遍历所有公司,从每个公司的AgeGroups表中获取最年轻的组和最旧的组,并将这些值插入CombinedAgeGroups?

1 个答案:

答案 0 :(得分:1)

您可以将INSERT ... SELECT分组查询一起使用:

INSERT INTO CombinedAgeGroups (
         CompanyId, YoungestGroupId , OldestGroupId
)
SELECT   CompanyId, MIN(AgeInMonths), MAX(AgeInMonths)
FROM     AgeGroups
GROUP BY CompanyId