MySQL Group By使一些字段消失

MySQL Group By使一些字段消失,mysql,sql,group-by,Mysql,Sql,Group By,为了满足项目的需要,我需要以如下方式显示数据: 第一层 组件1=>Area1 组件2=>区域2 … 第一层 面积小计=>1区+2区 第二层 组件3=>区域3 组件4=>区域4 … 第二层 区域2小计=>区域3+4 总面积小计1+小计2 但当我运行此查询时: SELECT `C`.`id` AS `componentID`, `C`.`name` AS `componentName`, `PC`.`id`, `PC`.`_productID`,

为了满足项目的需要,我需要以如下方式显示数据:
第一层
组件1=>Area1
组件2=>区域2

第一层
面积小计=>1区+2区


第二层
组件3=>区域3
组件4=>区域4

第二层
区域2小计=>区域3+4


总面积小计1+小计2


但当我运行此查询时:

SELECT `C`.`id` AS `componentID`, 
       `C`.`name` AS `componentName`, 
       `PC`.`id`, 
       `PC`.`_productID`, 
       `PC`.`_componentID`, 
       `PC`.`floor`, 
       `PC`.`area`, 
       SUM(PC.area) AS `AreaSum` 
  FROM `Component` AS `C` 
 INNER JOIN `Product_Component` AS `PC` 
    ON C.id=PC._componentID 
 WHERE (PC._productID= '79') 
 GROUP BY `PC`.`floor` ORDER BY `PC`.`floor` ASC
我没有得到我期望的东西。我没有在查询中显示区域列表和楼层面积之和,而是只得到楼层面积之和

如果我按选择列表中的所有字段分组,但不按区域分组,则会得到结果中每行的重复区域列表

你能帮我显示我描述的数据吗

以下是我的数据库结构:

`Component`

`id` int(11)             
`name` varchar(30)       
`dbname` varchar(100)   

`Product_Component`

`id` int(100)            
`_productID` int(11)     
`_componentID` int(11)    
`floor` int(3)          
`area` varchar(11)       
`details`  mediumtext   

虽然我不确定MySQL是否有这个子句,但总体上您想要的可能是
ROLLUP
。您可能需要循环应用程序代码中的所有结果,然后自己创建。请注意,不是聚合函数中的每一列(如
SUM(…)
GROUP BY
的一部分)都会有一个“随机”值,这是您无法控制的。如果您尝试此语句,几乎每一个其他RDBMS都会抛出一个语法错误,因此(这是非常危险的,因为您得到的结果没有保证)。谢谢你的回答。我在代码中做了一部分循环,以将楼层显示为标题,使其具有以下内容:楼层1--------------------------------------……楼层2------------------……楼层3----------------……我现在需要的是按楼层显示面积之和