SELECT a.comm_id, c.Title AS house_keeper_name, ( SELECT build.id FROM erp_base.tb_base_masterdata_resource AS resource INNER JOIN erp_base.tb_base_masterdata_resource AS unit ON unit.id = resource.parent_id INNER JOIN erp_base.tb_base_masterdata_resource AS build ON build.id = unit.parent_id WHERE resource.id = a.resource_id ) AS resource_group, b.resource_type FROM tb_charge_receipts_detail a LEFT JOIN erp_base.tb_base_masterdata_resource b ON a.resource_id = b.id LEFT JOIN erp_base.rf_dictionary c ON b.house_keeper = c.id GROUP BY a.comm_id, c.Title, resource_group, b.resource_type 在mysql中报SELECT list is not in GROUP BY clause and contains nonaggregated column 'erp_charge.a.resource_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 如何做sql的修改
时间: 2024-04-07 07:27:45 浏览: 25
根据错误提示,可以尝试修改sql_mode,去掉only_full_group_by,或者添加a.resource_id到GROUP BY子句中,但是这样可能会导致查询结果不准确。为了避免这种情况,可以使用聚合函数来替代a.resource_id,比如使用MAX(a.resource_id)。
修改后的SQL语句如下:
SELECT a.comm_id, c.Title AS house_keeper_name,
(SELECT build.id FROM erp_base.tb_base_masterdata_resource AS resource
INNER JOIN erp_base.tb_base_masterdata_resource AS unit ON unit.id = resource.parent_id
INNER JOIN erp_base.tb_base_masterdata_resource AS build ON build.id = unit.parent_id
WHERE resource.id = a.resource_id) AS resource_group,
b.resource_type
FROM tb_charge_receipts_detail a
LEFT JOIN erp_base.tb_base_masterdata_resource b ON a.resource_id = b.id
LEFT JOIN erp_base.rf_dictionary c ON b.house_keeper = c.id
GROUP BY a.comm_id, c.Title, resource_group, b.resource_type