MySQL中GROUP BY的一个有意思问题

我们来看一SQL语句

SELECT t2.cell_id, COUNT(1) AS num  
FROM table1 t1, table2 t2  
WHERE t1.cell_id = t2.cell_id  
AND t1.city_id = 121  
AND t1.cell_is_delete = 1  
AND t1.cell_check <> 3  
AND t2.is_delete <> 2

#AND t2.image_type = 1

GROUP BY t2.cell_id  
HAVING num > 3  

我的问题是:为什么在放开t2.image_type = 1后数据反而增加?

当时我在做数据统计的时候,在我没有添加t2.imagetype = 1时候,数据是3000多条,但是我添加了t2.imagetype = 1条件后,反而查询出了5000多条记录。当时心里想?为啥我的条件更苛刻了,数据反而增加了呢?

之后才想明白。

1、group by 是在某一个特定集合中按照某个字段的值进行分组,条件越是宽松,说明重合的概率会越大。

2、image_type = 1 与 num > 3 就决定了特定集合的具体值类型。所以group by出现的结果只会与集合的值特性有关系,有可能条件越苛刻,反而数据量会更大,也会更少。