Mysql三表连接聚合列和group by

时间:2017-06-22 18:12:32

标签: mysql

我有三个具有外键关系的数据表但是当我查询时它给出的错误如Syntax error or access violation: 1055 Expression #22 of SELECT list is not in GROUP BY clause and contains nonaggregated column invoices.imported'

下面是我的表结构

jobs

id      invoice_no      customer_id
1       H045                1
2       A041                2

job_detials 

id      job_id      est_start_date      est_off_date    
1         1           04-01-2017        01-01-2017
2         1           05-02-2017        03-06-2017
3         1           01-05-2017        17-04-2017
4         2           14-04-2017        15-02-2017
5         2           12-04-2017        03-04-2017   

invoices

id      job_id      imported
1       1               1
2       2               0

我试图执行结果的查询。

select `jobs`.`id` as `job_id`, `invoices`.`imported`,
MIN(job_details.est_start_date) as est_start_date, MAX(job_details.est_off_date) as est_off_date, `jobs`.`invoice_no` from `jobs`
left join `job_details` on `job_details`.`job_id`= `jobs`.`id` left join `invoices` on `invoices`.`job_id` = `jobs`.`id`
group by `jobs`.`id`

有些人可以帮我解决这个错误。 ?谢谢

1 个答案:

答案 0 :(得分:3)

在许多SQL数据库中,您必须GROUP BY所有非聚合字段;在这种情况下,您需要按job_idimportedinvoice_no进行分组。

在某些配置下,MySQL确实允许您省略这些字段,但是由于选择了invoicesimported之类的内容,因此更新的默认值会限制此类语法,这不是表的一部分其主键被分组,而不对其进行分组可能会产生不确定的结果。