在group by上使用多个列时mysql如何工作?

时间:2012-07-04 02:19:41

标签: mysql group-by

当在group by上使用多个列时,mysql如何工作:

select
    a.nome,
    b.tb2_id,
    count(c.tb2_id) as saida
from tb1 a
left join tb2 b on a.tb1_id = b.tb1_id
left join tb3 c on b.tb2_id = c.tb2_id
group by a.tb1_id, b.tb2_id
order by a.tb1_id desc

mysql如何知道它将用于对结果集进行分组的列?

我认为它会按顺序执行,但我将组更改为'b.tb2_id,a.tb1_id',但它不做任何更改,结果相同。

2 个答案:

答案 0 :(得分:6)

group by a.tb1_id, b.tb2_id表示a.tb1_idb.tb2_id对的分组,a.tb1_idb.tb2_id都需要相同才能被视为一个群组。< / p>

答案 1 :(得分:0)

只有order by子句影响行的顺序。

group by子句影响数据聚合。 mysql的特殊之处在于,与大多数其他数据库不同,它允许按未选择的列对数据进行分组,并进一步允许按列分组非聚合。在这个最后一个选项被执行的情况下(如在你的查询中 - a.nome没有被分组),mysql返回为每个组遇到的第一个行。如果您尝试执行此查询,我知道的所有其他数据库都会抛出SQL语法异常。