两张表查询主表条目数量,从表中条目数量以及从表中某个字段分组后的数量按主表的年度进行分组
时间: 2023-11-27 07:53:34 浏览: 55
两个表中查询出不同的数据
假设主表为"MainTable",从表为"SubTable",从表中需要分组的字段为"SubField",可以使用如下SQL语句实现:
```
SELECT
YEAR(MainTable.Date) AS Year,
COUNT(DISTINCT MainTable.Id) AS MainCount,
COUNT(DISTINCT SubTable.Id) AS SubCount,
SubTable.SubField,
COUNT(DISTINCT SubTable.SubField) AS SubFieldCount
FROM
MainTable
LEFT JOIN SubTable ON MainTable.Id = SubTable.MainTableId
GROUP BY
YEAR(MainTable.Date),
SubTable.SubField
```
说明:
1. 使用`LEFT JOIN`关联两张表,以主表为基准,从表通过`MainTableId`关联主表。
2. 使用`YEAR`函数提取主表中的年份。
3. 使用`COUNT(DISTINCT)`函数分别统计主表和从表中的条目数量,避免重复计算。
4. 使用`GROUP BY`对年份和从表字段进行分组,统计每个分组中子字段的数量。
阅读全文