选择*但按特定列分组,仅针对特定列

时间:2017-02-06 23:02:57

标签: mysql sql

这是我的表结构

公司表

|id|name|company_id

图片表

|id|file|type|company_id

现在,我正在尝试按类型从图像分组,它可以有2种类型(徽标|横幅),但如果我使用group by type将对所有行执行此操作,而不仅仅是id =公司ID

到目前为止我的查询:

SELECT * FROM companies c
    LEFT JOIN images i
        ON i.comp_id = c.id 

如上所述,如果我做以下

SELECT * FROM companies c
    LEFT JOIN images i
        ON i.comp_id = c.id 
group by type

它会对所有行进行分组(正如您所期望的那样),那么我如何按类型进行分组,并且只能在company_id(来自图像)相同的位置进行分组?

1 个答案:

答案 0 :(得分:1)

您可以按多个字段进行分组:

GROUP BY `type`, `company_id`

旁注:使用GROUP BY而不使用任何聚合函数通常是一个错误,并且大多数RDBMS都不会在没有指定所有非聚合字段的情况下让GROUP BY;但如果你正朝着这个方向努力,我是否正确?